高分求网络协议通信问题!(200分)

  • 主题发起人 主题发起人 beanteen
  • 开始时间 开始时间
B

beanteen

Unregistered / Unconfirmed
GUEST, unregistred user!
我们知道一般的网络通信协议都是类似这样的格式
定长的协议头
PackLength: 4字节
CMD: 4字节
Sequence: 8字节

变长的协议体
Content: N字节

这样的话,如果用sendbuf的方式将一个协议帧发出去,应该怎样做才好呢?请给出具体的代码,谢谢。
 
协议头和协议体包在一起发出去就行了。接收的时候读取16字节协议头,根据变长体长度值,再读取协议体就行。不复杂。
代码应该自己写,长经验啊。
 
我也知道一起发出去就行了
我是这样定义
packet = record
PackLength: integer;
CMD: integer;
Sequence: int64;
Content: string;
end;

然后我用sendbuf(pack, sizeof(pack)),发出去的不对啊
 
哪位能把你们做过的code写来看看么
 
1,record里不能使用String,那只是个指针,应该用Array of char
2,定义record应该用packed修饰,否则编译器会替你自动对齐,导致你计算的长度和计算机计算的长度不同。
 
bluebridge说的是对的!
或是
Content: WideString[1024];
 
你的数据结构定义的有问题。
1、定义成string不对:应该使用数组定义。
2、至于使用int64吗
 
后退
顶部