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的过程:
BOOL bReuseaddr = TRUE; setsockopt( s, SOL_SOCKET, SO_REUSEADDR, ( const char* )&bReuseaddr, sizeof( BOOL ) );