【发布时间】:2016-04-04 11:26:32
【问题描述】:
我有 2 个程序。 1 个服务器和 1 个客户端。
在客户端是这样的:
while(statement)
{
networkstream.write(data);
}
在服务器中是这样的:
while(statement)
{
while(statement)
{
ReceiveData;
}
Do other stuff;
}
因此,虽然客户端可以非常快速地写入网络流,但服务器仍然需要处理数据才能读取更多数据。
例如,当客户端已经完成 4 圈包含写入的循环,而服务器仍然只读取 1 次时会发生什么。
有没有办法让客户知道他什么时候可以再写一次? 当客户制作几个'.write'时会发生什么?服务器是否将它们全部保留并全部读取,或者已发送的数据是否被覆盖?
希望你能理解我的问题。如果您愿意,可以编辑问题标题。
【问题讨论】:
-
networkstream.Write 是同步的。它一直等到数据发送完毕。 networkstream.WriteAsync 不是。你用哪一个?两者都有机制来确保足够的写入/读取
-
现在我有这样的:
networkstream.Write(SendingBuffer, 0, currentPacketLength); -
这些是一些非常简单的 TCP 问题。你可以问一百个关于 SO 的问题,但也许查看一些 TCP 介绍文章或一本书会更快? :)
标签: c# networking networkstream