找个理由“放水”

Lewolf 2003-07-02 11:27:50
按照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出现异常,从而被系统自动关闭,但是我希望能有更好的方法来避免这种情况。

摆脱大家了!!!
...全文
87 79 打赏 收藏 转发到动态 举报
写回复
用AI写文章
79 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjlsmail 2003-07-07
  • 打赏
  • 举报
回复
Study
wjlsmail 2003-07-07
  • 打赏
  • 举报
回复
Study

太精彩了 , 好长时间没有看过这么棒的讨论

kingcaiyao(AKing) :

要是能再写个简单的服务端,然后都改为 Delphi 的 ... :):)

weixing979 2003-07-07
  • 打赏
  • 举报
回复
接分
鼠皮皮 2003-07-05
  • 打赏
  • 举报
回复
接分
nightfallrove 2003-07-05
  • 打赏
  • 举报
回复
接分!!
顺便叫一声李狼!!
:):)我不是MM
domustdo 2003-07-05
  • 打赏
  • 举报
回复
几个老大都在(当然包括楼主喽),学习学习
  • 打赏
  • 举报
回复
有高手来了,听听课.......
Lewolf 2003-07-04
  • 打赏
  • 举报
回复
To: hong668(心情不错)
playvc 是谁,我好像不认识的。他怎么可能有我的简历??
nnlyc 2003-07-04
  • 打赏
  • 举报
回复
接分啊:)
hong668 2003-07-04
  • 打赏
  • 举报
回复
我是广州的,是playvc 的同事.他以前推荐你说你很不错,
果然是人才呵,,,
netsys2 2003-07-04
  • 打赏
  • 举报
回复
拆线信令当然是从操作系统(驱动级)发出的。

由于种种原因,它完全可能到不到对方。

因此造成僵尸连接。

因此我给斑竹的建议是:

不要花时间去应用层找原因,

直接定时发送联络信号。

同时客户端必须有自动连接的功能。


invalid 2003-07-04
  • 打赏
  • 举报
回复
to:netsys2
长时间运行的服务程序是应该要检测死连接的。检测方式一般就是发送自定义的心跳包。
死连接是跟应用程序的处理方式有关。
又:
网线断开了你所谓的拆线信令怎么传?个人认为你说的拆线信令是有操作系统发出的。
它实际上也是一个IP包。

具体一方断开了,tcp是如何处理的。
参考:http://www.elib.sdu.edu.cn/books/protocol/TCP.htm
qibo999 2003-07-04
  • 打赏
  • 举报
回复
恭喜升星啊!呵呵,技术分一定要接点儿的。
netsys2 2003-07-04
  • 打赏
  • 举报
回复
不只是交换层,还有你的网卡的驱动层啊!

我不但做过实验,而且还在几种编程环境下测试过。

我们几家公司的产品同时在X总行使用,各家的开发环境分别是:

VC、CB、SCO UNIX、LINUX,

主机的环境是:IBM RS6000。

结果是:
如果没有联络信令,所有的厂家都会有僵尸连接。
连续运行2年后,最多的一家有几十条!

kingcaiyao(AKing),

不知道你的程序有没有这样的经验。
invalid 2003-07-04
  • 打赏
  • 举报
回复
又:一般的网络应用程序不需要检测网线断等网络故障。
只要在发送接收时处理异常重新尝试连接就可以了。
毕竟网线断开属于操作系统级别的故障。
invalid 2003-07-04
  • 打赏
  • 举报
回复
TCP协议中,连接主动断开是会发送IP包给对方通知断开的。
但是网络故障如网线断等情况下是不会发送IP包。
sunmedia 2003-07-04
  • 打赏
  • 举报
回复
天气干燥,都放点水,有利于放火哦!:)
kataboy 2003-07-04
  • 打赏
  • 举报
回复
接分!
RainyCTT 2003-07-04
  • 打赏
  • 举报
回复
菜鸟飞过来了。
厉害啊……
拷下来学习中。

PS:恭喜升星星。^^
hong668 2003-07-04
  • 打赏
  • 举报
回复
chinabcb是你的吗如果是的话我想应没错,呵,,
本来我们这里今年想找几个CB高手后来由于公司方向变了就没有联系你,
我想以后会有合作的机会的.
加载更多回复(59)

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧