我想知道在c#中的异步套接字中,在EndRead调用中接收0个字节意味着服务器实际上已经断开了我们的连接吗?

我看到的很多例子都表明情况就是这样,但我收到的断线频率要高得多.

这段代码是否正确?或者endResult< = 0对连接状态没有任何意义?

private void socket_EndRead(IAsyncResult asyncResult)

{

//Get the socket from the result state

Socket socket = asyncResult.AsyncState as Socket;

//End the read

int endResult = Socket.EndRead(asyncResult);

if (endResult > 0)

{

//Do something with the data here

}

else

{

//Server closed connection?

}

}

解决方法:

0读取长度应该意味着gracefull关闭.断开连接抛出error(10054,10053或10051).

实际上虽然我确实注意到读取完成时长度为0,即使连接处于活动状态,唯一的处理方法是检查0长度读取时的套接字状态.情况如下:在套接字上发布多个缓冲区以进行接收.然后发布的线程被池修剪.操作系统注意到发出请求的线程已经消失,它会通过错误995 ERROR_OPERATION_ABORTED通知发布的操作,如文档所述.然而,我发现当发布多个操作(即多次读取)时,只有第一个通知错误995,后续通知成功和0长度.

标签:c,asynchronous,sockets

来源: https://codeday.me/bug/20190610/1214495.html

c#endread怎么打印出来_c# – Socket.EndRead 0字节意味着断开连接?相关推荐

  1. c#endread怎么打印出来_C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解...

    本文主要向大家介绍了C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. using System; using System.Co ...

  2. c#endread怎么打印出来_C#教程之打印和打印预览

    最近研究一了一下关于PDF打印和打印预览的功能,在此小小的总结记录一下学习过程. 实现打印和打印预览的方法,一般要实现如下的菜单项:打印.打印预览.页面设置. PrintDocument类 Print ...

  3. c#endread怎么打印出来_C#中如何打印出整个PANEL的内容?

    需要将整个PANEL中的内容打印出来,使用了如下代码,但打印预览里还是一片空白?何解?1.privateBitmapmemImage=null;//声明全局变量下面代码会用到的2.privatevoi ...

  4. c#endread怎么打印出来_C# 小票打印机 ESC命令行方式打印

    private void btnPrinter_Click(object sender, EventArgs e) { #region ESC 热敏图像点阵像素点读取打印 //Bitmap bitma ...

  5. Socket 客户端判断服务器是否断开连接

    //  首先,Socket类的Connected属性只表示最后一次I/O操作的状态,如果这之后[连接的另一方]断开了,它还一直返回true, 除非你再通过socket来发送数据.所以通过个属性来判断是 ...

  6. c#endread怎么打印出来_NetworkStream.EndRead(IAsyncResult) 方法 (System.Net.Sockets) | Microsoft Docs...

    处理异步读取的结束.Handles the end of an asynchronous read. public: override int EndRead(IAsyncResult ^ async ...

  7. java与c++ socket通信_C++ socket 客户端与JAVA socket 服务端通信汗血宝马

    C++ socket 连接java 服务如果发送 packHeadLength+消息体 java 客户端代码 Socket socket = new Socket("127.0.0.1&qu ...

  8. android连接不上socket,关于socket通信的android与pc端连接,为什么我定义的socket是为空的,连接不上pc端...

    服务器端代码: package mytable; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im ...

  9. 换行显示print_r($arr);打印结果显示:Array( [0] = 百度 [1] = 阿里)

    数组array是非常重要的数据类型.相对于其他的数据类型,它更像是一种结构,而这种结果构可以存储一系列数值.数组能够在单一变量名中存储许多值,并且能够通过引用下标号来访问某个值. 在 PHP 中,有三 ...

最新文章

  1. SpringMVC权限管理
  2. 第2题——DNA片段
  3. HDFS分布式文件系统理论知识
  4. springboot数据源不正确_Spring MVC 到 Spring Boot 的简化之路
  5. 数据库杂谈(四)——关系演算和E-R数据模型
  6. springboot 做表白墙_经贸吐槽墙 |2020.12.13
  7. linux测试接口配置,linux can 总线socket接口测试使用
  8. SpringBoot整合RabbitMQ之Fanout Exchange扇形(广播式)交换机(学习总结)
  9. 凤凰刷机软件连接不上手机的解决办…
  10. 软件测试报告模板什么样的?
  11. 【python实战】爬取起点中文网自制小说阅读器
  12. CAD坐标系(UCS)
  13. 十大IT危机处理高手
  14. 计算机如何认硬盘,电脑怎样识别大容量的硬盘?
  15. redis源码阅读三-终于把主线任务执行搞明白了
  16. 新东方托福词汇(List 36 ~ List 40)
  17. Android viewpager+fragment实现无限滚动,左右有前/后一页的部分,并fragment显示的内容是activity传过去的数据
  18. 有道科学计算机,网易有道超级计算器获App Store推荐 打造随身数学帮手
  19. 石家庄IT培训业转型要诀:出品,用户,服务
  20. ur机器人编程-创建程序

热门文章

  1. StackExchange.Redis通用封装类分享(转)
  2. 在64位windows下使用instsrv.exe和srvany.exe创建windows服务
  3. bct对oracle影响,Oracle 优化篇+Rman增量备份优化之BCT(块变更追踪)
  4. 小白学习机器学习---第六章:SVM算法原理(1)
  5. 警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA(亲测)
  6. elasticsearch 索引存储深入详解
  7. 获取MySQL数据库表结构的信息(字段名,字段类型,注释等)
  8. linux usb 触摸屏驱动,请教大家一个linux下的usb触摸屏驱动的问题
  9. HTML与XHTML的区别
  10. 闲置硬盘自制nas私有云_闲置U盘不用扔,教你一招变云盘,随时随地备份数据、访问私有云...