gpt4 book ai didi

C# TcpClient,同时读写流

转载 作者:可可西里 更新时间:2023-11-01 02:29:56 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

必须同步的是多个并发读取。所有并发读取都必须通过 lock(objReads) 进行同步。

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

MSDN says , 这是有保证的。

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

关于C# TcpClient,同时读写流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com