我写了一个使用以下技术的多线程简单服务器:
clientStream.Read(message, 0, 4096);
阻塞直到客户端发送消息。然后代码继续处理该消息。
到目前为止,我只使用它来发送短命令。
ex. "#login[username][login]"
但我担心当我发送大量表格数据时,代码可能在所有数据接收之前继续运行。
那么,.Read方法会一直阻塞直到整个消息被接收,还是在开始接收任何数据时就解除阻塞?
我写了一个使用以下技术的多线程简单服务器:
clientStream.Read(message, 0, 4096);
阻塞直到客户端发送消息。然后代码继续处理该消息。
到目前为止,我只使用它来发送短命令。
ex. "#login[username][login]"
但我担心当我发送大量表格数据时,代码可能在所有数据接收之前继续运行。
那么,.Read方法会一直阻塞直到整个消息被接收,还是在开始接收任何数据时就解除阻塞?
TextReader
(假设协议是基于文本的)。这样,您在读取消息之前不必知道消息大小,也不必拥有消息结束分隔符,并且您可以潜在地读取大量消息而不使用太多内存。当然,这意味着必须有明确的方法来找到消息的结尾,但它不必在字符级别上清晰可见。 - svick