关于SOCKET的使用问题(100分)

  • 主题发起人 主题发起人 埃及使者
  • 开始时间 开始时间

埃及使者

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端使用Socketconnection连接位于公网的服务器上的中间层,中间层再连接数据库。<br>现在的问题是出现了死连接在Socketserver上,也就是客户端连接上了服务器,只是不知道为什么客户端断开了连接,Socketserver上还显示着那些连接?<br>怎么样才能去掉这些死连接?设置过timeout.
 
ClientDisconnect
 
没这个事件啊!
 
可以定时检查客户是否继续连接,如果已经断开,则主动关闭服务器端的连接。
 
在中间层做一个CheckClientLink()过程,移除那些死连接
 
现在服务器端只是被动的接收,连接的开与关都在客户端。<br>服务器端怎么关闭连接啊?<br>楼上的请详细说明一下!
 
使用KEEPALIVE属性设置,就可以了。<br>当连接断开以后会有返回,这样你去处理就是了!
 
To fxh7622:<br>什么控件的KEEPALIVE属性啊?<br><br>To All:<br>流程是:客户端中的Clientdateset连接socketconnection,socketconnection连接服务器上的中间层,borland socket server 此时开始显示客户端的ip和最后活动时间。中间层上不能得到客户端的连接信息啊!
 
做网络的东西,功能简单。我建议你用控件。<br>但是如果功能很复杂,在网络上需要实现各种东西我建议你用API。<br>KEEPALIVE是套接字的属性。也就是说你需要对套接字进行设置。在INDY下设置此属性非常麻烦(据我设置来说需要修改INDY的代码)。所以建议你用API。
 
设置scktsrvr的Inactive Timeout<br>Inactive Timeout就是多少時間後(好像是分鐘)客戶端沒有發出信息就斷開連接,這個很有用,可以清除一些“死連接”,例如,連接著的時候撥網線就會有一定機率出現服務器還在連接,但客戶端已經斷開的現象。
 
设置过TIMEOUT了,不管用啊,经常有在上边挂了N天的死连接,设置的是600
 
我测试了一下,在公司的局域网中使用设置TIMEOUT时间管用,可是连接到在公网的服务器就不管用了,是不是服务器那边还需要做什么关于socket方面的配置??<br><br>请各位路过的,也帮忙顶一下,谢谢!!
 
TIMEOUT设太长了,设置10就行了,它的单位是分钟,然后客户端每隔3分钟联接一下服务端。<br>----<br>设置过TIMEOUT了,不管用啊,经常有在上边挂了N天的死连接,设置的是600<br>-----
 
to ava:<br>现在应该不是TIMEOUT的设置问题,而且它的单位应该是秒,我在公司的局域网中测试过,在物理断连接后,局域网服务器上的TIMEOUT设置了60后,在大约1分钟的时间该死连接被踢出了,应该是相关到服务器的设置之类的。<br><br>TO ALL:<br>服务器是最近刚做的系统Windows 2000 Server(SP4),应用程序只装了MSSQL SERVER2000(SP3)、瑞星、VNC。<br>哪位大哥作过用Socketconnection做三层的,帮忙指点一下!
 
应该是分钟吧,上面明明写着的是分钟的。而且我也试过确实是按照分钟来算的。<br>我用的是D2006的那个Scktsrvr.exe
 
晕,刚看了Scktsrvr.exe,真是minute,丢人了!<br>可为什么,我测的时候一分钟就踢了??
 
问题解决了,应该是与服务器的系统问题有关。重做了遍系统!<br>原来的timeout也有问题。
 
主要是TIMEOUT的问题<br>其他几位给出的方法也都可以用只是做的改动大一些了!
 
多人接受答案了。
 
后退
顶部