【发布时间】:2018-10-27 04:45:43
【问题描述】:
我希望这是获得好答案的好日子。我有将数据发送到 TCP 服务器的代码。我可以发送数据,但我不知道如何包含标题。标题应该是什么样的准则如下
Device 与 XML 接口之间的通信使用 TCP 消息以标头开头,以指示消息数据段的长度。此标头必须在发送到 XML 接口的所有消息之前,并且将在来自 XML 接口的所有 TCP 响应的开头发送。
如果消息长度小于 2^16-1 或 65535,则将使用两个字节的标头。
标头的第一个字节包含消息长度(不包括此标头)与 256 的商。第二个字节包含此除法的余数。这两个值都以二进制表示为无符号整数值,范围从 0 到 255(字节 0x00 到 0xFF)。
如果消息长度大于或等于 216-1 或 65535 字节,则将使用 6 字节标头。
在这种情况下,应发送字节 0xFF 0xFF 后跟一个四字节长度指示符,即总共六个字节。
现在我所拥有的内容如下,并且如您所见,它并没有解决标题问题。这基本上是我的问题。
private static void main2(String hostname, int port, String message)
{
String response = String.Empty;
TcpClient client = new TcpClient(hostname, port);
Console.WriteLine(message);
NetworkStream stream = client.GetStream();
StreamWriter writer = new StreamWriter(stream,Encoding.UTF8);
writer.AutoFlush = false;
writer.WriteLine(message);
writer.Flush();
writer.Close();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
response = reader.ReadLine();
stream.Close();
}
信息确实到达了我的 TCP 服务器。 (通过使用 tcp 查看器确认)。但是因为我不知道如何包含标头,所以服务器无法回复我,因为它认为我的请求不完整。提前感谢你们的帮助。
【问题讨论】: