To gsw798
ServerSocket不响应,我觉得很可能是主程序在等同步对象的原因,
因为不知你的实现方式,因此仅是猜测,我前一段时间也在做类似的
开发,我也是用异步Socket,并且对每一个连接,用两个线程,分别负
则收发,做了很多同步,也出现过不响应的情况,发现是因为主线程执
行了WaitforSingleObject操作,处于等待(可设超时),无法响应OnAccept
/OnConnect等事件,后来我将所有类似的操作都以线程执行,比如在OnDisconnect
事件中我创建线程释放和该Socket相关的资源,问题得到解决,所以你要好好
检查程序,看看有没有死锁的可能。
另,如果网线被拔了,有两种情况,拔掉和服务器上的网线,如果是win2k,系统
可以立刻作出反应,ServerSocket上立刻发生OnError/OnDisconnect事件,具体是
那个事件,我已记不清了,如果是远端客户,服务器并不知道该连接已经断开,需
要做些操作来检测,我的服务器上有一个线程,定时发ICMP包,如果Ping不通,则
释放该Socket资源。
一般在编写这种程序时,对应用程序定义的包,都有一个空操作的包,它没有具体
的业务意义,仅仅是判断当前Socket连接是否可用,对方接受到这种包,也是什么也
不处理,丢弃到,我觉得这很有意义。
Socket.Close会出发OnDisconnect事件,要确保OnDisconnect事件只被触发一次,