zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    悲悯心洞悉真相
    查看逍遥模拟器端口号
    delphi中Tstringlist分割字符串的用法
    delphi中httpencode使用注意事项
    DELPHI常用类型及定义单元
    左旋转字符串
    链表中倒数第k个节点
    二叉树镜像
    用两个栈实现队列
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/zhangxiaoyong/p/5151651.html
Copyright © 2011-2022 走看看