c# - NetworkStream,是否有类似于 SerialPort 的 DataReceived 的东西? (C#)

标签 c# .net sockets serial-port networkstream

好的,所以我有点困惑为什么我在任何地方都找不到它,或者如果它不存在那么为什么 Microsoft 没有实现它?

这是我的场景,我有一个 NetworkStream,它有一个可爱的小 bool 值,称为 DataAvailable,我需要的是一个事件,它会跳出并说“嘿,有可用的数据!” (因为我很懒惰,我宁愿被告知有可用的数据,也不愿一遍又一遍地问“好吧,有可用的数据吗?”直到我得到“实际上,这次有”的回答)。

类似 SerialPort 的东西(它有一个很好的事件(DataReceived),友好地通知我正在从端口接收数据)会很好。但我使用的是带有 NetworkStream 的套接字。

如果明显缺少某些东西,请指出正确的方向,但如果没有,这是否意味着我将不得不在 DataAvailable 属性上使用一些数据绑定(bind),并且当它设置为 true 时,调用我自己的“自制”事件/功能?如果这将是这种方式,您能否给我一个小例子来启动球?

编辑
我的完美答案是有人过来向我解释我如何找到/创建与 SerialPort 一起使用的 DataReceived 事件极其相似的东西,但是为通过 NetworkStream 流式传输的 Socket 实现!

再次提前致谢,感激不尽。

最佳答案

只是为了澄清 Thomas 的回答,并为不熟悉 BeginRead 方法并想了解此问题答案的任何人提供解释,您可以调用:

AsyncCallBack MyCallBack = new AsynCallBack(DataReceived);
networkStream.BeginRead(buffer, offset, size, MyCallBack, MyObject);

然后创建 DataReceived 函数:

private void DataReceived(IAsynResult result)
  {
  //call receive functionality
  }

这将调用 DataReceived,与 SerialPort.DataReceived 事件的工作方式非常相似。

关于c# - NetworkStream,是否有类似于 SerialPort 的 DataReceived 的东西? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237996/

相关文章:

c# - 手势到文本识别、OCR 或基于手势的 native .NET 库

c# - LINQ:无法将类型 'System.Int32' 转换为类型 'System.Object'

c++ - C 套接字/轮询错误地返回 POLLOUT 事件?

java - 通过 Java TCP 套接字发送任意长的字符串

c# - 服务器证书与客户端证书

c# - 自动重构代码以避免无参数构造函数

c# - 无法将类型 'System.Linq.IQueryable<>' 隐式转换为 'Model' 。存在显式转换(是否缺少强制转换?)

c# - Pad Left & Pad Right (Pad Center) 字符串

c# - 如何抑制 Tasks.Task 不同的 PublicKeyToken 错误

sockets - go语言中的Unix域套接字名称