TcpClient,同时读取和写入流

本文关键字:读取 TcpClient | 更新日期: 2023-09-27 18:18:14

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

我们基本上在做一个TCP服务器/客户端应用程序,其中服务器是用Java编写的,客户端是用c#编写的。我在Java端,我使用分离的输入和输出流作为我的缓冲区。

我们的问题是,如果客户端从服务器接收消息并从缓冲区异步读取这些消息,并试图在此过程中写入一些内容,则会抛出异常-毫无疑问。

我的问题是:在这种情况下该怎么做?创建分离的流?我们已经尝试过了,但c#似乎不希望我们这么做。我们迫切需要一个解决方案,任何帮助都是非常感激的!

TcpClient,同时读取和写入流

不,它应该可以工作。你需要的是TcpClient,你可能已经有了。从那里,TcpClient.GetStream(),返回NetworkStream。这样,读写操作就可以并发/同时进行,而不需要同步。所以读和写可以同时发生。

需要同步的是多个并发读。所有并发读必须由lock(objReads)同步。

同样,多个并发写操作必须由lock(objWrites)同步。

MSDN说,它是有保证的。

请注意,我说得很清楚,读和写有不同的锁。