C#TcpClient,同时读写流

Psy*_*ion 15 c# buffer tcp input stream

我知道这个问题在SO上已经多次被问过,但是没有一个线程解决了我们目前面临的完全相同的问题.

我们基本上是在使用TCP服务器/客户端应用程序,其中服务器是用Java编写的,客户端是用C#编写的.我在Java端,我正在为我的缓冲区使用分离和输出流.

我们的问题是,如果客户端从服务器接收消息并从缓冲区中异步读取这些消息并尝试在该过程中写入一些内容,则会抛出异常 - 这并不奇怪.

我的问题是:这种情况下的方法是什么?创建分离的流?我们已经尝试过,但似乎C#不希望我们这样做.我们迫切需要一个解决方案,非常感谢任何帮助!

ipa*_*vlu 14

不,它应该工作.你需要的是TcpClient,你可能已经拥有的.从那里TcpClient.GetStream()回来NetworkStream.然后,读取和写入操作可以同时/同时发生,而无需同步.因此读写可以同时发生.

必须同步的是多个并发读取.所有并发读取都必须同步lock(objReads).

同样,必须同步多个并发写入lock(objWrites).

MSDN说,它是有保证的.

请注意,我明确表示,读取和写入具有不同的锁定.