找回密码
 加入
搜索
查看: 2384|回复: 3

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

[复制链接]
发表于 2010-1-16 19:30:30 | 显示全部楼层 |阅读模式
本帖最后由 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秒
发表于 2010-1-16 19:48:38 | 显示全部楼层
本帖最后由 ceoguang 于 2011-11-27 01:37 编辑

http://www.autoitx.com/forum.php ... 74&fromuid=1009
 楼主| 发表于 2010-1-16 19:58:07 | 显示全部楼层
我想了一种,先用ping ,在用TCPConnect ,只要ping得通,就算TCPConnect不通,也比直接TCPConnect响应要快
发表于 2010-1-16 22:12:47 | 显示全部楼层
用TCP,好像此问题很难解决,我也遇到过这问题,我的解决方法是:

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

这样的好处是,在网内的任何一台电脑运行服务器,客户端都能连接到服务器,而客户端也不会因为TCPConnect不通而造成的卡死。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-29 01:19 , Processed in 0.095177 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表