winsocket多个客户端连接的问题

chuting1 2011-08-04 11:09:16
服务器端开放一个端口1399,启动时默认为侦听状态

If sockServer.State <> sckClosed Then
sockServer.Close
End If


sockServer.LocalPort = "1399"
sockServer.Listen

服务器连接请求处理:
Dim msgResult As VbMsgBoxResult
If sockServer.State = sckListening Then
sockServer.Close
End If

lstStateInfo.AddItem "服务器收到连接请求"
sockServer.Accept requestID
lstStateInfo.AddItem "连接成功"


客户端连接

sockClient.Protocol = sckTCPProtocol

If txtServerName.Text <> Empty Then
sockClient.RemoteHost = txtServerName.Text
Else
lstStateInfo.AddItem "必须输入服务器名称或IP地址"
Exit Sub
End If

If txtServerPort.Text <> Empty Then
sockClient.RemotePort = txtServerPort.Text
Else
lstStateInfo.AddItem "必须输入远程端口"
Exit Sub
End If

sockClient.Connect



客户端数据发送

sockClient.SendData txtSend.Text



一个客户端没有关系,第二个客户端打开连接时,就会返回“连接被强制拒绝”
如果不使用connect,直接数据发送,则会提示"所需事物或请求的错误协议或连接状态"

是什么原因,请指点
...全文
89 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chinaboyzyq 2011-08-04
[Quote=引用 MSDN]
接受多个连接请求
上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。

下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。

Private intMax As Long

Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckServer(intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub


[/Quote]
回复
sqtadk 2011-08-04
问题出在这里:
If sockServer.State = sckListening Then
sockServer.Close
End If

你把这段去掉就没问题了
回复
wildone 2011-08-04
是winsock只能进行一组连接吧?
回复
chuting1 2011-08-04
是不是一个服务器器一个端口只能和一个客户端连接?

在服务器连接请求里加了
If sockServer.State = sckAlreadyConnected Then
sockServer.Accept requestID
lstStateInfo.AddItem "连接成功"
End If
还是不行
回复
chuting1 2011-08-04
谢谢,楼上正解
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7486

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2011-08-04 11:09
社区公告
暂无公告