UDP(强行关闭了一个现有的连接远程主机)

事件回顾:客户端连接服务器 ,一段时间后会发生服务器“挂掉”的情况,为了找到原因,在调试模式下运行服务器,捕捉到了一下异常:

红色框出来的即为异常原因:强行关闭了一个现有的连接远程主机

   

然后就发生了可怕的事情,如下图:

不断抛出此异常。。。

网上找了下解决方法:觉得比较靠谱的如下:

注意:C#命名空间在 system.Net.socket.socket.IOControl

可是我的是VB.NET写的,就将上面这段话改成了VB.NET语言:

注意:VB.NET命名空间是:System.Net.Sockets

 Dim IOC_IN As Integer = &H80000000
            Dim IOC_VENDOR As Integer = &H18000000
            Dim SIO_UDP_CONNRESET As UInteger = IOC_IN Or IOC_VENDOR Or 12
            handler.IOControl(Convert.ToInt32(SIO_UDP_CONNRESET), New Byte() {False}, Nothing)
View Code

注:上述方案是针对UDP协议,而我在程序中使用的是TCP协议,所以最终的解决方案是:

listener = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
                listener.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, True)

允许套接字绑定在已使用的地址中。测试服务器不会当掉!

  End

  • 感谢你的阅读。如果你觉得这篇文章对你有帮助或者有启发,就请推荐一下吧~你的精神支持是博主强大的写作动力。欢迎转载!
  • 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
  • 欢迎加入.NET 从入门到精通技术讨论群→523490820 期待你的加入
  • 不舍得打乱,就永远学不会复原。被人嘲笑的梦想,才更有实现的价值。
  • 我的博客:http://www.cnblogs.com/zhangxiaoyong/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值