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/
目录
相关文章
|
1月前
|
网络协议 Python
Python网络编程实现TCP和UDP连接
Python网络编程实现TCP和UDP连接
29 0
|
1月前
|
网络协议 网络性能优化 Python
python怎么实现tcp和udp连接
python怎么实现tcp和udp连接
16 0
|
8月前
|
Linux 网络性能优化 C++
Linux UDP编程:深入探索无连接通信的实现与应用
在Linux操作系统中,UDP(用户数据报协议)是一种无连接的传输协议,适用于那些对数据传输延迟要求较高、但可靠性要求相对较低的场景。本文将深入探索Linux UDP编程的实现原理与应用,介绍UDP的工作机制、编程接口以及如何在Linux环境下编写UDP程序。
376 0
|
网络协议 Java 数据安全/隐私保护
Java中UDP通信连接实现
TCP与UDP的主要区别: TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
1858 0
|
网络协议 Linux 网络安全
Linux netcat对tcp/udp的连接和监听
netcat是一个用于TCP/UDP连接和监听的linux工具, 主要用于网络传输及调试领域。 netcat 可以打开TCP连接发送UDP报文,监听在TCP和UDP端口,以及TCP端口扫描,并将错误消息输出到屏幕上。
3848 0
|
算法 C# Windows
Windows下的UDP爆了10054--远程主机强迫关闭了一个现有的连接
故事是这样的。 前几天在网上逛,看到了一个漂亮的坦克模型。 我觉得这个坦克可以做一个游戏,那需要一些服务器代码。 因为是实时对战的,听说TCP有很多不适,选择了UDP。 得知有一种算法可以解决UDP丢包乱序的问题,就封装成了C#,雄赳赳气昂昂准备大搞一番。
2092 0
|
网络协议 Linux
linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
changing a readonly file (linu single user mode) 执行mount -o remount rw -t ext3 / 让根文件系统重新mount成读写,你就可以自由编辑整个文件系统了 /etc/kinittab or /etc/rc.
1538 0