在写服务端udp socket接受数据时,曾遇到一个不容易察觉的问题:
------由于客户端的不正常操作/关闭(频繁打开、关闭,就会出现这个不容易察觉的问题),导致服务端遇到异常:SocketException,错误代码:10054,异常信息描述:“远程主机强迫关闭了一个现有的 连接”。
------如果是在一个一直监听请求的线程里捕获该异常,遇到此问题时,表现为不再接收请求,线程未推出,貌似一切正常。

话不多说,解决方案如下:
private Socket NewUdpSocket(ushort port){//初始化udp socket Socket localUdpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);EndPoint LocalUdp_Point = new IPEndPoint(IPAddress.Any, port);//绑定端口localUdpSocket.Bind(LocalUdp_Point);
//初始化结束//正常使用时,到此为止了,为了解决问题加上以下四行uint IOC_IN = 0x80000000;uint IOC_VENDOR = 0x18000000;uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;localUdpSocket.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null);//加入这段代码return localUdpSocket;}

正常情况下,按如上使用,即可解决问题。要考虑出现的可能的异常,并进行正常处理,避免资源浪费。

解决udp socket报socketException使得服务端不再正常工作相关推荐

  1. Esp8266学习之旅⑧ 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。(带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  2. php winform通信,C# Winform 通过Socket实现客户端和服务端TCP通信

    操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...

  3. 基于Socket实现客户端与服务端通讯

    基于Socket实现客户端与服务端通讯 socket 概述 Socket,套接字就是两台主机之间逻辑连接的端点.TCP/IP协议是传输层协议,主要解决数据如何 在网络中传输,而HTTP是应用层协议,主 ...

  4. java网络编程Socket实现客户端向服务端发送信息

    (可按目录按需阅读,我一般会整理的比较细) 前置知识 java IO Socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址.源端口.目的ip地址和源端口. ...

  5. Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信

    本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...

  6. Java中利用socket实现简单的服务端与客户端的通信(基础级)

    在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...

  7. Python基于socket实现的TCP服务端

    ''' 基于socket实现的TCP服务端 '''import socket # 建立socket对象 server_socket=socket.socket(socket.AF_INET,socke ...

  8. php socket 握手,python Socket之客户端和服务端握手详细介绍

    这篇文章主要为大家详细介绍了python Socket之客户端和服务端握手,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据 1 ...

  9. Java中Socket实现客户端和服务端通信(多线程实现全双工通信)

    效果图 目录结构 服务端Server package server;import thread.SocketReader; import thread.SocketWrite;import java. ...

最新文章

  1. Can not find the tag library descriptor for http://www.springframework.org/tags/form 解决方法
  2. 文本特征选择 java代码_文本分类入门(十)特征选择算法之开方检验
  3. 【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )
  4. navicat连接CentOS的mysql在创建存储过程时出现1146 - Table ‘mysql.proc’ doesn't exist的问题
  5. 变态公式之如何算出圆的内部被切割成几块?
  6. c++的虚拟继承 的一些思考吧
  7. java 排序api_用java api进行sort
  8. [转]综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation
  9. html ts 播放,vue文件拆分为html + ts + css
  10. 兜兜线报软件合集_柚子快报淘抢购秒杀系列【送秒杀软件】
  11. 贝叶斯公式:通俗的理解
  12. 佳博GP-L80180 打印机 win7下 驱动方式 打印
  13. python中开根号函数_用二分法定义平方根函数(Bisection method Square Root Python)
  14. chrome主页和新标签页被金山毒霸劫持 处理方法
  15. UEFI——PCD研究
  16. MapGIS 转换DXF格式文件
  17. 好听的敕勒川天苍苍野茫茫风吹草低见牛羊
  18. 2021-2027全球与中国网眼织物纺织品市场现状及未来发展趋势
  19. 江南大学计算机阶段测试题,江南大学2016.09计算机应用基础(专科类)第2阶段测试题...
  20. IT职场: 选择外企利与弊

热门文章

  1. 度量衡计算工具_【度量衡换算器下载】中国古代度量衡换算器 v2.1 中文版-开心电玩...
  2. 读取Assets中的数据库 .db文件
  3. web渗透测试----34、DoS和DDoS攻击
  4. Cucumber eclipse plugin install
  5. 算法流程图组件的基本含义及画法举例(Kmeans)
  6. android 讯飞语音引擎3.0默认粤语播报
  7. 一文搞懂 神经辐射场(Neural Radiance Fields,NeRF)
  8. CBM 业务模型是什么和为什么?
  9. 2020中兴捧月算法大赛阿尔法赛道决赛总结(多目标检测与跟踪)
  10. 起步远远落后世界,但仍然要追逐梦想!