itljl 发表于 2010-12-11 15:10:23

有更好的方法判断一个TCP连接中socket已经无效了吗?

TCPsend($socket,"")
If @error Then
; $socket 无效了
endif

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

或者如何通过注册一个消息,如tcp事件模式中的
GUIRegisterMsg( 0x0400, "___TCP_OnAccept" )
来获取,一个socket断开的消息?然后来处理这个 $socket

ceoguang 发表于 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不就可以了吗?

itljl 发表于 2010-12-11 19:42:21

本帖最后由 itljl 于 2010-12-11 19:45 编辑

回复 2# ceoguang


C版,能举个例子吗? 谢谢。我不想用那个tcp事件模式,不好用。

ceoguang 发表于 2010-12-12 01:48:41

好用与否,见仁见智了.
其实socket通讯中也有事件的,无需像那个UDF一样去注册用户消息
具体可以参考WSACreateEvent及WSAEventSelect
里面就包含了CONNECT及DISCONNECT等事件.

19377708 发表于 2010-12-26 04:56:30

支持下!期待解答!
页: [1]
查看完整版本: 有更好的方法判断一个TCP连接中socket已经无效了吗?