读书人

socket 异常怎么恢复

发布时间: 2012-02-25 10:01:48 作者: rapoo

socket 错误如何恢复? - C++ Builder / Windows SDK/API
我用winsock的时候,当socket出现 10054(或者是其它错误)错误时,能不能复用这个个socket 呢?就是将这个连接关闭再重新打开,而不用socket再创建一个,还是只能closesocket后,再建立一个新的socket才能再次恢复tcp连接的???
请求各位指点迷津...

[解决办法]
//看下这个API level的值调整一下,可以重用

int setsockopt (

SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);


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

C/C++ code
  BOOL bReuseaddr = TRUE;  setsockopt( s, SOL_SOCKET, SO_REUSEADDR, ( const char* )&bReuseaddr, sizeof( BOOL ) ); 

读书人网 >C++ Builder

热点推荐