永发信息网

VB如何使用Winsock进行1对多通信

答案:3  悬赏:50  手机版
解决时间 2021-01-18 04:17
  • 提问者网友:爱了却不能说
  • 2021-01-17 04:56
VB如何使用Winsock进行1对多通信
最佳答案
  • 五星知识达人网友:孤老序
  • 2021-01-17 05:06
VB可通过通过创建Winsock控件数组,使用一个控件Winsock也可以同时接受多个连接请求。不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。
提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、Visual Basic、Visual C++ 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。
代码实例:
下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的
LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求
Option Explicit
    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
全部回答
  • 1楼网友:山河有幸埋战骨
  • 2021-01-17 07:20
你看看有关VBWinsock的书籍吧,上面讲的比较全面
  • 2楼网友:话散在刀尖上
  • 2021-01-17 05:51
01.建立几个连接就需要几个Winsock,并且最好使用Winsock数组
Winsock数组就是form中画一个Winsock,把index属性设置成0
private sub form_load()
Winsock(0).localport=5555 '服务器端口
Winsock(0).listen
end sub
'重要: 当ConnectionRequest时,加载一个Winsock,用新的Winsock响应,新的Winsock会继承新的Winsock(0)的端口属性
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load Winsock1(Winsock1.Ubound+1)
Winsock1(Winsock1.Ubound).Accept requestID
End Sub
'这样就可以了
02:同下
03:服务器比普通计算机性能好,不过假如通讯规模小,普通计算机就行了,再去设置一下"TCP并发连接数",具体通讯代码和服务器是 一样的.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯