Nodejs的WebSocket模块怎么设置连接超时时间
2017-12-19 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
在建立socket连接时可以很容易设置socket通信的发送和接收超时时间,但是在建立socket通信时,如果是Win98系统,则如果连接失败,则程序会一直等待在哪里,Windows2000默认超时时间是30秒,当然,这个超时时间不算长,但是加入我们要循环扫描一系列端口并且建立连接的话,总的等待时间就会让人忍受不了,下面就以delphi为例进行说明,如何在建立socket的时候设置其超时时间:
//连接,发送和接收时间都设为2秒
SctTimeOut := 2000;
//设置接收数据通信超时
setsockopt(hSock,SOL_SOCKET,SO_RCVTIMEO,@SctTimeOut,SizeOf(Integer));
//设置发送数据通信超时
setsockopt(hSock,SOL_SOCKET,SO_SNDTIMEO,@SctTimeOut,SizeOf(Integer));
//首先,设置通讯为非阻塞模式
dwArg := 1;
RecvLen := ioctlsocket(hSock,FIONBIO,dwArg);
//其次,连接服务器
ZeroMemory(@addr, sizeof(addr));
addr.sin_family := AF_INET;
addr.sin_addr.S_addr := inet_addr(pchar(SvrIP));
addr.sin_port := htons(Strtoint(SvrPort));
RecvLen := 0;
RecvLen := connect(hSock, addr, sizeof(addr));
//再次,设置连接超时时间为2秒
tmOut.tv_sec := 2;
tmOut.tv_usec := 0;
FD_ZERO(recvSet);
FD_SET(hSock, recvSet);
RecvLen := select(0, @recvSet, @recvSet, nil, @tmOut);
//连接失败,报错误信息
if (RecvLen = 0) or (RecvLen = SOCKET_ERROR) then
begin
ErrMsg := '连接服务器失败!';
exit;
end;
//最后,设置通讯为阻塞模式
dwArg := 0;
RecvLen := ioctlsocket(hSock,FIONBIO,dwArg);
//end modify
//连接,发送和接收时间都设为2秒
SctTimeOut := 2000;
//设置接收数据通信超时
setsockopt(hSock,SOL_SOCKET,SO_RCVTIMEO,@SctTimeOut,SizeOf(Integer));
//设置发送数据通信超时
setsockopt(hSock,SOL_SOCKET,SO_SNDTIMEO,@SctTimeOut,SizeOf(Integer));
//首先,设置通讯为非阻塞模式
dwArg := 1;
RecvLen := ioctlsocket(hSock,FIONBIO,dwArg);
//其次,连接服务器
ZeroMemory(@addr, sizeof(addr));
addr.sin_family := AF_INET;
addr.sin_addr.S_addr := inet_addr(pchar(SvrIP));
addr.sin_port := htons(Strtoint(SvrPort));
RecvLen := 0;
RecvLen := connect(hSock, addr, sizeof(addr));
//再次,设置连接超时时间为2秒
tmOut.tv_sec := 2;
tmOut.tv_usec := 0;
FD_ZERO(recvSet);
FD_SET(hSock, recvSet);
RecvLen := select(0, @recvSet, @recvSet, nil, @tmOut);
//连接失败,报错误信息
if (RecvLen = 0) or (RecvLen = SOCKET_ERROR) then
begin
ErrMsg := '连接服务器失败!';
exit;
end;
//最后,设置通讯为阻塞模式
dwArg := 0;
RecvLen := ioctlsocket(hSock,FIONBIO,dwArg);
//end modify
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询