我正在处理代码质询,简而言之,它提供了一个服务器,用于对请求中发送的数据进行编码/解码。它是具有以下自定义二进制请求/响应结构的TCP / IP服务器:
我需要创建一个桌面客户端,它将发送请求并接收响应,并相应地显示数据。我无法理解请求将如何形成,以及如何将请求发送到TCP / IP服务器(使用C#)。有人可能提供一个这样的例子吗?
答案 0 :(得分:0)
不确定您的校验和,但构建数据包看起来像
byte[] CreatePacket(string s, Operation op)
{
var packet = new List<byte>();
packet.AddRange(BitConverter.GetBytes((UInt16) 0x1092));
packet.Add(1);
var data = Encoding.ASCII.GetBytes(s);
packet.AddRange(BitConverter.GetBytes((UInt32) (9 + data.Length)));
packet.Add((byte) (op == Operation.Encode ? 1 : 2));
packet.AddRange(data);
packet.Add(CheckSum(packet));
return packet.ToArray();
}
给出
enum Operation
{
Encode,
Decode,
}
和
server.Send(CreatePacket("test string", Operation.Encode))
还有校验和规范......
byte CheckSum(List<byte> packet)
{
return (byte)(packet.Select((b, i) => (value: b, index: i))
.Sum(o => (o.value & (1 << (o.index % 8))) > 0 ? 1 :0) % 256);
}