b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

setsockopt socket_error_socket_error_socket setsotimeout(4)

电脑杂谈  发布时间:2017-05-14 03:11:09  来源:网络整理

WSAEINVAL:level非法,或optval中的信息非法。

WSAENETRESET:当SO_KEEPALIVE设置后连接超时。

WSAENOPROTOOPT:未知或不支持选项。其中,SOCK_STREAM类型的套接口不支持SO_BROADCAST选项,SOCK_DGRAM类型的套接口不支持SO_DONTLINGER 、SO_KEEPALIVE、SO_LINGER和SO_OOBINLINE选项。

WSAENOTCONN:当设置SO_KEEPALIVE后连接被复位。

WSAENOTSOCK:描述字不是一个套接口。

用法:

1.设置调用closesocket()后,仍可继续重用该socket。调用closesocket()一般不会立即关闭socket,而经历TIME_WAIT的过程。 BOOL bReuseaddr = TRUE; setsockopt( s, SOL_SOCKET, SO_REUSEADDR, ( const char* )&bReuseaddr, sizeof( BOOL ) );

2. 如果要已经处于连接状态的soket在调用closesocket()后强制关闭,不经历TIME_WAIT的过程: BOOL bDontLinger = FALSE; setsockopt( s, SOL_SOCKET, SO_DONTLINGER, ( const char* )&bDontLinger, sizeof( BOOL ) );

3.在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,可以设置收发时限: int nNetTimeout = 1000; //1秒 //发送时限 setsockopt( socket, SOL_SOCKET, SO_SNDTIMEO, ( char * )&nNetTimeout, sizeof( int ) ); //接收时限 setsockopt( socket, SOL_SOCKET, SO_RCVTIMEO, ( char * )&nNetTimeout, sizeof( int ) );

4.在send()的时候,返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节(异步);系统默认的状态发送和接收一次为8688字节(约 为8.5K);在实际的过程中如果发送或是接收的数据量比较大,可以设置socket缓冲区,避免send(),recv()不断的循环收发: // 接收缓冲区 int nRecvBuf = 32 * 1024; //设置为32K setsockopt( s, SOL_SOCKET, SO_RCVBUF, ( const char* )&nRecvBuf, sizeof( int ) ); //发送缓冲区 int nSendBuf = 32*1024; //设置为32K setsockopt( s, SOL_SOCKET, SO_SNDBUF, ( const char* )&nSendBuf, sizeof( int ) );

5.在发送数据的时,不执行由系统缓冲区到socket缓冲区的拷贝,以提高程序的性能: int nZero = 0; setsockopt( socket, SOL_S0CKET, SO_SNDBUF, ( char * )&nZero, sizeof( nZero ) );

6.在接收数据时,不执行将socket缓冲区的内容拷贝到系统缓冲区: int nZero = 0; setsockopt( s, SOL_S0CKET, SO_RCVBUF, ( char * )&nZero, sizeof( int ) );


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-46987-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 禹瑞丽
      禹瑞丽

      他们那里会知道什么就被撞沉了

    • 桑谷夏子
      桑谷夏子

      醉了永远半张脸

    热点图片
    拼命载入中...