//连接,发送和接收时间都设为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文件,也引用了这个加载超时的文件以后称为此文件,但是,这两个文件中因为此文件的路径写的不一致,例如一个文件中写的是在requirejs配置文件中配置的此文件的而另一个文件中写的是关于此文件的相对路径或者全。
解决方法所以,将他们引用此文件的方式改为一致即可。注意各个模块引用同一个文件的方式要一致。若是一个公共文件,在requirejs的配置文件中做了配置,那么其他模块在引入时都按照requirejs的配置文件的方式来引用,否则,可能会造成在一个页面中出现同一个文件的两种不同引用方式。