您的位置:首页 > 理论基础 > 计算机网络

几个有用的socket选项

2010-08-08 14:14 232 查看
 TCP_NODELAY

作用:启用nagle算法(Nagle's algorithm)

行为:使得socket立即发送一个datagram,并小datagram不合并到大datagram中。

java:使用java.net.Socket#getTcpNoDelay()与java.net.Socket#setTcpNoDelay(boolean on)函数检索和设    置。

SO_LINGER

 

 

 

作用:决定被关闭的socket怎样处理socket缓冲区中的未发送的数据

struct linger {
int l_onoff; /* 0 = off, nozero = on */
int l_linger; /* linger time */
};
 


行为:默认close()立即返回,但系统尝试发送数据。此时 linger。l_onoff=0,linger。l_linger=0

 系统关闭调用close()的socket,并抛弃socket缓冲区中的数据。此时linger。l_onoff!=0,linger。         l_linger=0

 系统将阻塞调用close()方法的socket所属的进程,直到socket缓冲区中的数据被发送并确认,linger。 l_onoff=0,linger。l_linger!=0

    java:使用java.net.Socket#setSoLinger(boolean on, int seconds)和java.net.Socket#getSoLinger检索和 设置该选项的值 

SO_TIMEOUT

作用:使得socket在执行读写操作时,等待一段时间即返回。

行为:一直等待直到获得所需的数据,此时等待时间为0,即一直阻塞。

 等待一段时间返回。此时不一定获得所需的数据。

java:使用java.net.Socket#setSoTimeout(int time)和java.net.Socket#getSoTimeout()设置和检索该选项

SO_RCVBUF

作用:设置socket接收缓冲区的大小

行为:改变socket接收缓冲区的大小

java:使用java.net.Socket#setReceiveBufferSize(int size)和java.net.Socket#getReceiveBufferSize( )      设置和检索该选项

SO_SNDBUF

作用:设置socket发送缓冲区大小

行为:改变socket发送缓冲区大小

java:使用java.net.Socket#setSendBufferSizeSize(int size)和java.net.Socket#getSendBufferSizeSize( ) 设置和检索该选项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息