//连接,发送和接收时间都设为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
引用链接,加载js超时需要修改配数。brrequireJs的加载是一种异步机制,它加载js的时候有个默认的超时机制,因为网络原因或者资源找不到等原因引起的。
可以修改配置参数waitSeconds默认为7秒,可以设置为0表示永远不超时,或者大一点的数字,一般情况加载超时是静态资源过大造成或者是加载网络资源阻断。