本文整理自网络,侵删。
Function ConnectTimeOut(pAddr:PAnsiChar; uPort:Word; uTimeOut:Byte = 3):TSocket;Var hSocket :TSocket; Addr :TSockAddrIn; uFalg :u_long; WriteDset :TFDset; ExceptDset:TFDset; TimeVal :TTimeVal;begin Result := INVALID_SOCKET; Addr.sin_family := AF_INET; Addr.sin_port := htons(uPort); Addr.sin_addr.s_addr := inet_addr(pAddr); if (Addr.sin_addr.s_addr = SOCKET_ERROR) then Exit; hSocket := Winapi.WinSock.socket(AF_INET, SOCK_STREAM, 0); if hSocket = INVALID_SOCKET then Exit; uFalg := 1; if ioctlsocket(hSocket, FIONBIO, uFalg) = NO_ERROR then begin connect(hSocket, Addr, SizeOf(TSockAddrIn)); uFalg := 0; if ioctlsocket(hSocket, FIONBIO, uFalg) = NO_ERROR then begin FD_ZERO(WriteDset); FD_ZERO(ExceptDset); FD_SET(hSocket, WriteDset); FD_SET(hSocket, ExceptDset); TimeVal.tv_sec := uTimeOut; TimeVal.tv_usec := 0; select(0, nil, @WriteDset, @ExceptDset, @TimeVal); if (FD_ISSET(hSocket, WriteDset)) then Result := hSocket; Exit; end; end; shutdown(hSocket, SD_BOTH); closesocket(hSocket); end;
来源:https://www.7xcode.com/archives/102.html
相关阅读 >>
Delphi tstringlist 自带 split 用法
Delphi2007-Delphi2010 程序不出现在任务栏的方法
Delphi分割字符串的函数--extractstrings
Delphi有无生成空格的函数,like vb的space(1)
更多相关阅读请进入《Delphi》频道 >>