the886 发表于 2010-1-16 19:30:30

如何解决? TCP传输,服务端没打开,客户端会卡死数秒

本帖最后由 the886 于 2010-1-16 20:06 编辑

也就是,当服务器没有开机,有窗口的客户端运行到这条语句时会卡死数秒之后,才出现“不通”
#include <File.au3>
TCPStartup()
$iBeginTime = TimerInit()
$socket = -1                               
$socket = TCPConnect("192.168.1.5", 8410);连接到服务器
If $socket <> -1 Then
else
_FileWriteLog("bug.log", "不通 耗时: " & Round(TimerDiff($iBeginTime) / 1000, 4) & "秒")
msgbox(0,"","不通")
endif

结果
2010-01-16 20:05:09 : 不通 耗时: 20.9929秒

ceoguang 发表于 2010-1-16 19:48:38

本帖最后由 ceoguang 于 2011-11-27 01:37 编辑

http://www.autoitx.com/forum.php?mod=redirect&mod=redirect&goto=findpost&ptid=28832&pid=368974&fromuid=1009

the886 发表于 2010-1-16 19:58:07

我想了一种,先用ping ,在用TCPConnect ,只要ping得通,就算TCPConnect不通,也比直接TCPConnect响应要快

C.L 发表于 2010-1-16 22:12:47

用TCP,好像此问题很难解决,我也遇到过这问题,我的解决方法是:

客户端运行时,不进行TCP连接,而是建立一个UDP侦听,服务器端服务运行后,通过UDP广播向本段广播自已的IP地址和传送客户端激活TCP连接的标志位,让客户端自动设置服务器端IP和服务器进行TCP连接。
服务器关闭时,再传送关闭TCP标志位,停止客户端TCP连接。

这样的好处是,在网内的任何一台电脑运行服务器,客户端都能连接到服务器,而客户端也不会因为TCPConnect不通而造成的卡死。
页: [1]
查看完整版本: 如何解决? TCP传输,服务端没打开,客户端会卡死数秒