求助高手vb6.0用winsock的TCP/UDP进行端口扫描和一对多通讯的问题怎么解决 10

现在我用一个上位机对多个模块进行控制,要先扫描出有哪些模块处于连接状态,并得到其相关信息,然后可以给任意模块发命令,已知各个模块的IP范围是1.1.1.0——1.1.1.... 现在我用一个上位机对多个模块进行控制,要先扫描出有哪些模块处于连接状态,并得到其相关信息,然后可以给任意模块发命令,已知各个模块的IP范围是1.1.1.0——1.1.1.224,端口号可以任意设置,一个模块可以有多个端口号,上位机IP1.1.1.255,我现在有两种解决方案:
1、用TCP协议,事先把每个模块设成相同端口号,然后逐个IP进行探测式connect,如果连接成功,就发一个命令,让模块其返回其相关信息,断开连接,探测下一个IP。
此方案的问题是:在不停的扫描过程中,怎样保证连接后发送命令后,不继续探测而等待回复的信息。等接受完信息再继续扫描。
2、用UDP协议,作为非连接式协议,我可以给每个IP发送一条命令,然后坐等收到命令的模块回复信息,
此方案的问题是:UDP要求绑定端口,这样是不是各个模块的端口就不能一样了呢?我在我电脑是实验时发现UDP不管端口号是多少,我用一个服务端给两个不同端口发信息,对应的端口收不到,而另外一个却能收到,费解ing,而且现在最大的问题是:如果我发送的IP号为空的话,就返回一个让程序不能运行的错误,因为我发完要接收回复的嘛,它就在接收的环节出问题,不能完成探测。
那位高手能帮忙解决一下,解决的很OK加分
第二个方案已经解决了,现在就剩第一个了:用TCP协议,事先把每个模块设成相同端口号,然后逐个IP进行探测式connect,如果连接成功,就发一个命令,让模块其返回其相关信息,断开连接,探测下一个IP。
展开
 我来答
反转ing
2010-11-14 · TA获得超过957个赞
知道小有建树答主
回答量:857
采纳率:50%
帮助的人:765万
展开全部
Private Sub Form_Load()
'将 LocalPort 属性设置为一个整数。然后调用 Listen 方法。
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show '显示客户端的窗体。
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
'检查控件的 State 属性是否为关闭的。如果不是,在接受新的连接之前先关闭此连接。
If tcpServer.State <> sckClosed Then
tcpServer.Close
End If
'接受具有 requestID 参数的连接。
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
'名为 txtSendData 的 TextBox 控件中
'包含了要发送的数据。当用户往文本框中键入数据时,使用 SendData 方法发送输入的字符串。
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
'为进入的数据声明一个变量。
'调用 GetData 方法,并将数据赋予名为 txtOutput的 TextBox 的 Text 属性。
Dim strData As String
tcpServer.GetData strData
txtOutPut.Text = strData
End Sub
frmClient:
Private Sub Form_Load()
'Winsock 控件的名字为 tcpClient。
'注意:要指定远程主机,可以使用
' IP 地址(例如:"121.111.1.1"),也可以使用
'计算机的“好听的名字”如下所示。
tcpClient.RemoteHost = "127.0.0.1"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
'调用 Connect 方法,初始化连接。
tcpClient.Connect
End Sub

Private Sub txtSend_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutPut.Text = strData
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式