Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
c#不停止地插座发送器和接收器_C#_Sockets - Fatal编程技术网

c#不停止地插座发送器和接收器

c#不停止地插座发送器和接收器,c#,sockets,C#,Sockets,我的回答中有几个问题我不明白 1) 在他定义ShutdownEvent的地方,发送方和接收方是否需要定义每个事件 2) 有人能给出完整的例子说明如何继续编写代码吗 else if (_stream.Read(_data, 0, _data.Length) > 0) { // Raise the DataReceived event w/ data... } 以及他如何以及在何处定义_数据 3) 不知何故,我设置后,数据是否需要设置事件作为ShutdownEvent.WaitOne(

我的回答中有几个问题我不明白

1) 在他定义ShutdownEvent的地方,发送方和接收方是否需要定义每个事件

2) 有人能给出完整的例子说明如何继续编写代码吗

else if (_stream.Read(_data, 0, _data.Length) > 0)
{
   // Raise the DataReceived event w/ data...
}
以及他如何以及在何处定义_数据

3) 不知何故,我设置后,数据是否需要设置事件作为ShutdownEvent.WaitOne(1)


很抱歉提出了很多问题,请提前感谢

不幸的是,存在这样一个例子,特别是有这么多的赞成票,因为在.NET中使用套接字确实是一种糟糕的方法。我对它最大的质疑是使用了
DataAvailable
(这在高效、正确的网络I/O代码中是不需要的)和专用于I/O的线程(一个正确的异步实现不需要显式运行线程,当然IOCP线程池确实用于I/O完成例程)。我认为,试图引导你理解那个例子是浪费时间。如果你真的想理解它,就在那里贴一条评论和你的问题。碰巧的是,我最近发布了一个基于socket的客户机/服务器基本实现(使用聊天服务器作为示例应用程序)的不同且更优秀的示例。它展示了如何在现代C#时代使用异步I/O,以及如何以完全异步(即“不停止”)的方式处理优雅的关闭和强制重置/关闭。这是我发现并尝试实现它的最好例子,但仍需要更多解释才能使其充分工作。我正在开发的客户谁需要能够发送和接收数据在同一时间。但有时服务器发送给客户端10-15次,客户端需要能够在循环中处理。对不起,我的意思是在我之前的评论中包含指向我答案的链接。您可以在此处找到我的示例客户机/服务器实现:。至于需要能够同时发送和接收数据,这在我提供的代码示例中得到了隐式支持。如果你需要帮助适应,当然你可以发布一个问题。但您需要提供一个很好的演示,展示您尝试过的内容,并解释您遇到的具体问题。尝试添加您的解决方案,但由于我正在Unity3D中编写客户端代码,因此看起来不允许有太多引用。