标题:万分火急 实在是头疼了!关于ConnectionRequest
只看楼主
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
 问题点数:0 回复次数:2 
万分火急 实在是头疼了!关于ConnectionRequest

在WINSOCK的SERVER端中有这么一段代码


Private Sub myserver_ConnectionRequest(ByVal requestID As Long)
MsgBox "有人要跟我连接"
If myserver.State <> sckClosed Then
myserver.close
End If
myserver.Accept requestID
End Sub


仔细读这段代码,其中的IF语句表示,如果有客户端向SERVER发送连接请求时,如果SERVER的连接没有处于关闭状态,则关闭掉SERVER后重新与新的客户端建立连接


假设现在有SERVER A 和CLIENT B 、 C
当A和B正确建立连接后,C向A发送一个连接请求,此时A会断开与B的连接而与C建立新的连接



我现在想实现的功能是,当A接收到新的连接请求时,出现选择框,A可以自由选择是保持与B的连接还是重新与C连接

最重要的是,如果A保持与B连接,C应该要收到相应的提示,比如“A拒绝了连接”
就这个功能,我找了很多地方都没有发现可以解决,但是看到相关资料和MSDN上说 SERVER端是可以选择是否与新的CLIENT连接的。


那具体怎么实现呢?谢谢大家一定要帮我解答!肯定是有办法的,但是最好不借助第三方控件(我曾想过在CLIENT端做一个TIMER超过时间就自动停止正在连接的过程,但是似乎我也没找到办法停止正在进行的连接,除了UNLOAD)

搜索更多相关主题的帖子: 火急 SERVER myserver 头疼 Sub 
2006-11-28 02:06
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
得分:0 
今天晚上又思考了很久,还把瑞星防火墙搬出来察看端口状态

看了半天我发现,当A和B通信时,假如C象A发出REQUEST,好像A是几乎忽略的。即使是有IF语句要求有新的REQUEST来到时必须执行A.close。

但是我发现,仅仅是A.close还不能中止B对A的端口占用(大概是因为B向A在传送数据的原因吧,即使A把门关了,B还是在门口堵着)
最重要的是要实现B.close。但是如何在SERVER上执行client的命令呢?看来只能用senddata和getdata事件了。

假设server要让client关闭的时候,象client发一条特约的字符串(比如(shutdown)),当client的getdata接到后,判断字符串,如果吻合,就执行client.close。


这个想法也是理论上的,今天也太晚了,没办法实验,只是不知道还有没有更好的办法,或者是一开始我的思路就错了?
2006-11-28 03:30
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
得分:0 
顶一下
2006-11-28 20:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-105802-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.093299 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved