Tag: 非阻塞

C#中的套接字,如何通过NetworkStream异步读写数据

[我仅限于Visual Studio 2010,因此,我不能使用C#4 async和await。] 我正在研究我的项目的网络架构,它通过网络在服务器和客户端之间发送数据包,但客户端和服务器必须在等待时继续运行,因此代码必须是非阻塞的,所以我想过要使用异步方法。 但是,除了简单的同步一次性IO,我不知道该怎么做,特别是在使用NetworkStream时。 我想要做的是: 1)客户端连接到服务器 2)服务器接受连接 3)服务器等待来自客户端的数据 4)服务器处理数据 5)服务器响应客户端 6)连接打开时,从3开始重复。 我想使用NetworkStream来包装套接字。 但我是异步I / O的新手,我不确定在等待响应时如何在不阻塞服务器/客户端代码的其他部分的情况下执行此操作,尤其是对于NetworkStream。 在我的研究中,我看到使用类似这样的例子: while(true){ socket.BeginAccept(new AsyncCallback(AcceptCallback), socket ); } 但似乎循环仍然会阻碍应用程序。 谁能给我一些关于如何做到这一点的指针(ha)? 我无法找到许多保持连接打开的示例,只有Client Connect – > Client Send – > Server Recieve – > Server Send – > Disconnect。 我不是要求完整的代码,只是提供一些片段的一般想法。