找个理由“放水”
按照csdn的传统,升星的时候总会出来放水,我不愿意破坏这个规矩,在meCAD给我最后的30分之后,也来给大家散散分,由于非技术区的分数不能加到专家分,我还是在基础区发这个帖子,顺便问一个问题,也不破坏原则,在技术版灌水。
第一次到CSDN的时间已经无法考证了,只是前不久整理两年前备份的光盘时,在IE的Favorites收藏夹中发现了CSDN的连接,也许第一次来的时候,CSDN并不象今天这样繁荣,之后就忘却了。
真正到CSDN注册是去年11月,注册不久提了两个问题,都是未果,一个是TClientSocket在现在来看对TServerSocket同样有效的问题,就是如何绑定本机的IP地址以及本机的连接端口,当时回复的不少,却一直没有得到正确的答案,也许是我的表达有问题。
第二个问题是关于Windows域用户方面的问题,也就是前不久在ChinaBCB.com发的《利用Windows域让客户端“0”配置》相关的问题,也许当时的可用分太少了,哪个问题只有20分,也许是问题太大了,也许是我根本就没有说清楚文什么,这个问题竟然一直没有被回复,之后莫名其妙的丢失了,我也因此被扣掉了1个信誉点。
只有两个问题,却都没有得到好的答案,自然有点失望和灰心,同时我决定不在CSDN提技术性的问题,实际上看大家的问题收获已经很大了,不过今天还是有一个问题需要大家来解决,也好给大家一个接分的机会。
这个问题是:
TServerSocket在网络故障的时候如何检测,尽管这个组件提供了OnClientError事件,但是有些时候,这个事件是不会被触发的,比如客户端和服务端没有通讯的,但是保持这连接,如果此时,客户端的网线被切断,客户端的TClientSocket会收到一个OnClientError事件,但是TServerSocket是不会收到的,这样以来,对于服务端被动通讯的程序,客户端不稳定的时候,TServerSocket会出现很多的“占着茅坑不拉屎”的ActiveConnections,如何解决这样的尴尬局面。
自然可以通过定期的从TServerSocket向TClientSocket发送一个简短的数据,让这些僵尸般的Socket出现异常,从而被系统自动关闭,但是我希望能有更好的方法来避免这种情况。
摆脱大家了!!!