用一个Socket对同一远端点同时做UDP收发

wood87654321 2008-10-20 11:14:07
情况很简单,我用一个Socket针对同一远端点做UDP发收
建立远端点:RemoteEP = CType(New IPEndPoint(IPAddress.Parse("192.168.20.10"), 12345), EndPoint)
......
标准的发和收语句:
mySocket.SendTo(Buffer, RemoteEP)
mySocket.ReceiveFrom(Buffer2, RemoteEP)(程序里在独立的线程中阻塞接收)

如果连续执行上面两句将出现错误“远程主机强迫关闭了一个现有的连接”,从字面看应是服务端断开了建立的连接,但我觉得与这个不相干。我并没有开远端机,UDP也不建立连接,而且如果单用上面的收或发语句都没问题。所以我真正想知道的是,如果用一个Socket对同一远端点同时做收发,有什么要注意的地方?上面我的做法有什么问题?
...全文
209 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
candy61818 2012-07-09
  • 打赏
  • 举报
回复
楼主的问题后来是怎么解决的呢?看了很多都没有看到真正的解决方法
1黄鹰 2008-12-05
  • 打赏
  • 举报
回复
不妨试试把套接字设置成可重用类型的
wood87654321 2008-10-20
  • 打赏
  • 举报
回复
Dim mySocket As Socket
Dim RemoteEP As EndPoint '远程终结点
Dim LocalEP As EndPoint '本地终结点
LocalEP = CType(New IPEndPoint(IPAddress.Parse("192.168.20.60"), 10001), EndPoint)
RemoteEP = CType(New IPEndPoint(IPAddress.Parse("192.168.20.61"), 10001), EndPoint)
mySocket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
mySocket.Bind(LocalEP)
Dim Buf1(100) As Byte
Dim Buf2(100) As Byte
mySocket.SendTo(Buf1, 0, 10, SocketFlags.None, RemoteEP)
mySocket.ReceiveFrom(Buf2, RemoteEP)


红色两句任存其一正常,都存在必错。然而接收用mySocket.Receive(Buf2)则不报错
wood87654321 2008-10-20
  • 打赏
  • 举报
回复
又测试了一下,与远端点是否是同一个也不相干,应该是用同一个Socket同时做收发该怎么写?

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧