我读过 Tcp Echo 服务器的示例,但有些事情我不清楚。
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 连接原则上是全双工的。所以你正在处理两个独立的通道,是的,双方可以同时写入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)