TCPStream.Read是否会阻塞,直到在发送消息中接收到所有数据为止?

问题描述

| 我编写了一个使用以下内容的多线程简单服务器:
clientStream.Read(message,4096);
在客户端发送消息之前进行阻止。然后,代码继续处理该消息。 到目前为止,我只用它来发送短命令
ex. \"#login[username][login]\"
但是我担心当我通过该行发送巨大的表数据时,代码可能会在接收到所有代码之前继续执行。 那么.Read是否会阻塞直到接收到整个发送的消息,或者当任何数据开始接收时才取消阻塞?     

解决方法

        依靠“发送”完成以在消息之间进行描述是不好的形式。如果不是出于最简单的原因。我可以远程登录到您的服务器并轻松使其崩溃。 您需要创建一个有线协议。您有几种选择。 始终将消息的大小预期为前4个字节,为32位无符号整数,然后读取直到您填充了该数据量。 指定消息结尾定界符。这意味着您将维护一个缓冲区。您可以将数据离线填充,快速扫描消息末尾。找到消息后,将其扔给消息处理器,然后继续处理缓冲区中剩余的字节,重复步骤1。 您可以查看STOMP以获取基于文本的简单协议。 不要将您的数据包以定义良好的块作为消息定界符发送。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...