架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 16967|回复: 1

[资料] [实战]UDP System.Net.Sockets.SocketException

[复制链接]
发表于 2017-3-9 10:16:26 | 显示全部楼层 |阅读模式
System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。   在 System.Net.Sockets.Socket.ReceiveFrom(Byte[] b



在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现一个错误:
System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。
最初的最愚蠢的解决方法就是,在catch语句里不做任何动作,让监听端口函数继续运行。但这并非一个长久之计,后来在网上找了 好久,找到了微软的解释。


微软的解释:http://support.microsoft.com/kb/263823

解决方案:








上一篇:成功进行了一次UDP打洞[转载]
下一篇:Javascrip{过滤}t window.print() 设置打印样式和内容
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2017-3-9 10:17:54 | 显示全部楼层
在初始化对象后设置属性如下:
                    uint IOC_IN = 0x80000000;
                    uint IOC_VENDOR = 0x18000000;
                    uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
//uc为接收数据所使用的UdpClient,不同程序自己手改
            uc.Client.IOControl((int)SIO_UDP_CONNRESET, new byte[] {Convert.ToByte(false)}, null);

Socket.IOControl 方法 (IOControlCode, Byte[], Byte[])
使用 IOControlCode 枚举指定控制代码,为 Socket 设置低级操作模式。
参数
ioControlCode
一个 IOControlCode 值,它指定要执行的操作的控制代码。
optionInValue
Byte 类型的数组,包含操作要求的输入数据。
optionOutValue
Byte 类型的数组,包含由操作返回的输出数据。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-6-23 07:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表