gpt4 book ai didi

c# - NetworkStream 如何在两个方向上工作?

转载 作者:行者123 更新时间:2023-12-04 02:24:34 25 4
gpt4 key购买 nike

我读过一个 Tcp Echo Server 的例子,有些事情我不清楚。

TcpClient client = null;
NetworkStream netStream = null;

try {
client = listener.AcceptTcpClient();
netStream = client.GetStream();

int totalBytesEchoed = 0;
while ((bytesRcvd = netStream.Read(rcvBuffer, 0, rcvBuffer.Length)) > 0) {
netStream.Write(rcvBuffer, 0, bytesRcvd);
totalBytesEchoed += bytesRcvd;
}

netStream.Close();
client.Close();
} catch {
netStream.Close();
}

当服务器收到一个数据包(while 循环)时,他将数据读入 rcvBuffer 并将其写入流中。

令我困惑的是通信中消息的时间顺序。使用 netStream.Write() 写入的数据是立即发送到客户端(甚至可能仍在发送),还是仅在已写入流的数据(由客户端)处理后发送。

下面的问题甚至可以澄清前面的问题:如果客户端通过写入流发送一些数据,该数据是否已移动到服务器端的消息队列中等待读取,因此该流实际上是“空的”?这将解释为什么服务器可以立即写入流 - 因为来自流的数据实际上是在其他地方缓冲的......?

最佳答案

TCP 连接原则上是全双工的。因此,您正在处理 2 个独立的 channel ,是的,双方可能同时进行写作。

关于c# - NetworkStream 如何在两个方向上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611582/

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