找回密码
 加入
搜索
查看: 5536|回复: 4

[网络通信] 有更好的方法判断一个TCP连接中socket已经无效了吗?

[复制链接]
发表于 2010-12-11 15:10:23 | 显示全部楼层 |阅读模式
TCPsend($socket,"")
If @error Then
; $socket 无效了
endif

如上面的代码 $socket 是一个经过连接并可用的 $socket,但因为对方断线这个socket就无效了,
怎样判断他无效呢?我现在用的方法是 使用 tcpsend 如果出错,就表示无效,
还有别的更好的办法吗?

或者如何通过注册一个消息,如tcp事件模式中的
GUIRegisterMsg( 0x0400, "___TCP_OnAccept" )
来获取,一个socket断开的消息?然后来处理这个 $socket
发表于 2010-12-11 17:47:47 | 显示全部楼层
_TCP_RegisterEvent($hSocket, $iEvent, $sFunction)
从字面就可以理解.
第一个是socket
第二个是事件.
事件见常量
Global Const $TCP_SEND = 1
Global Const $TCP_RECEIVE = 2
Global Const $TCP_CONNECT = 4
Global Const $TCP_DISCONNECT = 8
Global Const $TCP_NEWCLIENT = 16
第三个是回调函数
如客户端断开连接,可以注册$TCP_DISCONNEC事件,然后在回调函数中关闭相对应的socket不就可以了吗?
 楼主| 发表于 2010-12-11 19:42:21 | 显示全部楼层
本帖最后由 itljl 于 2010-12-11 19:45 编辑

回复 2# ceoguang


C版,能举个例子吗? 谢谢。我不想用那个tcp事件模式,不好用。
发表于 2010-12-12 01:48:41 | 显示全部楼层
好用与否,见仁见智了.
其实socket通讯中也有事件的,无需像那个UDF一样去注册用户消息
具体可以参考WSACreateEventWSAEventSelect
里面就包含了CONNECT及DISCONNECT等事件.
发表于 2010-12-26 04:56:30 | 显示全部楼层
支持下!期待解答!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 14:43 , Processed in 0.076472 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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