永发信息网

vb WINSOCK UDP 地址族不支持 10047

答案:2  悬赏:20  手机版
解决时间 2021-03-15 11:40
Private Sub Form_Load()
'Control控件名字为 udpPeerB
With udpPeerB
'重点: 必须将RemoteHost值改为对方计算机名字
RemoteHost = "127.0.0.1"
RemotePort = 1002 '要连接端口
Bind = 1001 '绑定到本地端口上
End With
End Sub
Private Sub txtSend_Change()
'在键入后立即发送文本
udpPeerB.SendData txtSend.Text
End Sub
Private Sub udpPeerB_DataArrival _
(ByVal sTotal As Long)
Dim strData As String
udpPeerB.GetData strData
txtOutput.Text = strData
End Sub

协议已设置为UDP
出现错误,地址族不支持 10047

谢谢wangtk1982
最佳答案
这样改改就行了
可以
.LocalPort = 1002
.Bind 1002 '绑定到本地端口上
做本地测试

Private Sub Form_Load()
'Control控件名字为 udpPeerB
With udpPeerB
'重点: 必须将RemoteHost值改为对方计算机名字
.RemoteHost = "127.0.0.1"
.RemotePort = 1002 '要连接端口
.LocalPort = 1001
.Bind 1001 '绑定到本地端口上
End With
End Sub
Private Sub txtSend_Change()
'在键入后立即发送文本
udpPeerB.SendData TxtSend.Text
End Sub
Private Sub udpPeerB_DataArrival(ByVal sTotal As Long)
On Error Resume Next
Dim strData As String
udpPeerB.GetData strData, vbString
txtOutput.Text = strData
End Sub
全部回答
udp 初步 创建 udp 应用程序比创建 tcp 应用程序还要简单,因为 udp 协议不需要显式的连接。在上面的 tcp 应用程序中,一个 winsock 控件必须显式地进行“监听”,另一个必须使用 connect 方法初始化连接。 udp 协议不需要显式的连接。要在两个控件中间发送数据,需要完成以下的三步(在连接的双方): 将 remotehost 属性设置为另一台计算机的名称。 将 remoteport 属性设置为第二个控件的 localport 属性。 调用 bind 方法,指定使用的 localport。(下面将详细地讨论该方法。) 因为两台计算机的地位可以看成“平等的”,这种应用程序也被称为点到点的。为了具体说明这个问题,下面将创建一个“聊天”应用程序,两个人可以通过它进行实时的交谈。 要创建一个 udp 伙伴,请按照以下步骤执行: 创建一个新的 standard exe 工程。 将缺省的窗体的名称修改为 frmpeera。 将窗体的标题修改为“peer a”。 在窗体中放入一个 winsock 控件,并将其命名为 udppeera。 在“属性”页上,单击“协议”并将协议修改为 udpprotocol。 在窗体中添加两个 textbox 控件。将第一个命名为 txtsend,第二个命名为 txtoutput。 为窗体增加如下的代码。 private sub form_load() '控件的名字为 udppeera with udppeera '重点:必须将 remotehost 的值 '修改为计算机的名字。 .remotehost= "peerb" .remoteport = 1001 '连接的端口号。 .bind 1002 '绑定到本地的端口。 end with frmpeerb.show '显示第二个窗体。 end sub private sub txtsend_change() '在键入文本时,立即将其发送出去。 udppeera.senddata txtsend.text end sub private sub udppeera_dataarrival _ (byval bytestotal as long) dim strdata as string udppeera.getdata strdata txtoutput.text = strdata end sub 要创建第二个 udp 伙伴,请按照以下步骤执行: 在工程中添加一个标准窗体。 将窗体的名字修改为 frmpeerb。 将窗体的标题修改为“peer b”。 在窗体中放入一个 winsock 控件,并将其命名为 udppeerb。 在“属性”页上,单击“协议”并将协议修改为“udpprotocol”。 在窗体上添加两个 textbox 控件。将第一个命名为 txtsend,第二个命名为 txtoutput。 在窗体中添加如下的代码。 private sub form_load() '控件的名字为 udppeerb。 with udppeerb '重点:必须将 remotehost 的值改为 '计算机的名字。 .remotehost= "peera" .remoteport = 1002 '要连接的端口。 .bind 1001 '绑定到本地的端口上。 end with end sub private sub txtsend_change() '在键入后立即发送文本。 udppeerb.senddata txtsend.text end sub private sub udppeerb_dataarrival _ (byval bytestotal as long) dim strdata as string udppeerb.getdata strdata txtoutput.text = strdata end sub 如果要试用上面的例子,按 f5 键运行工程,然后在两个窗体的 txtsend textbox 中分别键入一些文本。键入的文字将出现在另一个窗体的 txtoutput textbox 中。 关于 bind 方法 在上面的代码中,在创建 udp 应用程序时调用了 bind 方法,这是必须的。bind 方法的作用是为控件“保留”一个本地端口。例如,如果将控件绑定到 1001 号端口,那么其它应用程序将不能使用该端口进行“监听”。该方法阻止其它应用程序使用同样的端口。 bind 方法的第二个参数是任选的。如果计算机上存在多个网络适配器,可以用 localip 参数来指定使用哪一个适配器。如果忽略该参数,控件使用的将是计算机上“控制面板”设置中“网络”控制面板对话框中列出的第一个适配器。 在使用 udp 协议的时候,可以任意地改变 remotehost 和 remoteport 属性,同时始终保持绑定在同一个 localport 上。tcp 协议与此不同,在改变 remotehost 和 remoteport 属性之前,必须先关闭连接。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一体机式的电脑可以更换显卡吗?
我的轮胎是185-55-15的都能换哪个型号的?
0.35表示()个(),350/1000表示()个()?它
新版的宫本武藏的五级铭文最好用什么。
oppo手机出现一个手机的符号戴一个红杠是什么
有谁知道低保工资最低是多少
一千厘米等于多少米?
光明大陆斗技场打到王者 需要多久
四年级下册语文天天向上13课摘抄内容
2014款奇骏遥控器开关锁怎么没声音呢
乐意购物超市我想知道这个在什么地方
vivo售后维修在苏州哪里
显而易见的英语怎么说
辽宁省出版产品质量监督检验中心怎么去啊,有
ファナリス歌词
推荐资讯
唐朝高不危是怎么死的
北方药店在什么地方啊,我要过去处理事情
出色印务粤西地区NO.1在什么地方啊,我要过去
丹阳市华宏冲压件厂在什么地方啊,我要过去处
金色口腔门诊部这个地址在什么地方,我要处理
深圳宝安人民医院体检时间
谜语在生活中都有什么用?
安琪尔孕婴童精品怎么去啊,有知道地址的么
大腿抽脂后为什么要绷带绷紧?
粤相之巧味馆地址有知道的么?有点事想过去
小牛m1后面可以坐人吗
寄100g内函每重20g0.8元,10g需要多少,90g需
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?