Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetworkStream,是否有类似于SerialPort接收的数据?(C#)_C#_.net_Sockets_Serial Port_Networkstream - Fatal编程技术网

NetworkStream,是否有类似于SerialPort接收的数据?(C#)

NetworkStream,是否有类似于SerialPort接收的数据?(C#),c#,.net,sockets,serial-port,networkstream,C#,.net,Sockets,Serial Port,Networkstream,好吧,我有点困惑,为什么我在任何地方都找不到这个,或者如果它不存在,那么为什么微软没有实现它 这里是我的场景,我有一个NetworkStream,它有一个可爱的小布尔值叫做DataAvailable,我需要的是一个事件,它跳出来说“嘿,有数据可供您使用!”(因为我很懒,我宁愿被告知有数据可用,而不是一直问“好吧,有数据可用吗?”一次又一次,直到我得到回答“实际上,这次有”) 类似于SerialPort的东西(它有一个nice事件(DataReceived),善意地通知我正在从端口接收数据)会很好

好吧,我有点困惑,为什么我在任何地方都找不到这个,或者如果它不存在,那么为什么微软没有实现它

这里是我的场景,我有一个NetworkStream,它有一个可爱的小布尔值叫做DataAvailable,我需要的是一个事件,它跳出来说“嘿,有数据可供您使用!”(因为我很懒,我宁愿被告知有数据可用,而不是一直问“好吧,有数据可用吗?”一次又一次,直到我得到回答“实际上,这次有”)

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

如果我明显缺少某些东西,请为我指出正确的方向,但如果没有,这是否意味着我必须在DataAvailable属性上使用一些数据绑定,并且当它设置为true时,调用我自己的“自制”事件/函数?如果是这样的话,你能给我举个小例子让事情顺利进行吗

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


再次提前感谢,非常感谢。

网络流中没有事件。类()<代码>网络流继承自
,因此它遵循不基于事件的流模型。如果您需要异步接收数据,请使用
BeginRead
方法来澄清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事件的工作方式非常相似。

值得指出的是,您仍然需要调用.EndRead方法来正确完成读取过程并获取数据。