在程序中定义了一个结构,如下
comm_package = record
ver_no:word;
class_no:word;
package_len:word;
Package_body:string;
end;
请问,如何通过socket口将这个结构体包含的内容发送到Server端
comm_package = record
ver_no:word;
class_no:word;
package_len:word;
Package_body:string;
end;
请问,如何通过socket口将这个结构体包含的内容发送到Server端
解决方案 »
- 公司工作量少时,大家是如何提升自己的??
- 专门介绍delphi组件及其属性方法的书
- YY群里面给我笑翻在地表情的接分了!
- .net技术跟以前的技术相比到底有哪些变化?欢迎回答
- 求个简单车辆管理系统学习!
- 运行一些代码时经常提示“access violation at assress 77e3b03d in module'ntdll.dll'.write ofaddress 00000000”??
- 关于用installshell for delphi制作安装包的问题
- enumwindows的用法????
- BCB或DELPHI进入Ring0
- 新人求知帖!!
- 窗体调用问题(我是初学者,请大家帮忙)
- 关于variant类型计算结果的疑问?
Package_body:string[100];
看看indy例子IdTCPDemo
"Package_body:string; 不行吧,Package_body:string[100];"Package_Body: Byte[100]; 记得要 Null-Terminate string 哈
cp:comm_package;
...
csocket.Socket.SendBuf(cp,sizeof(comm_package));
var
Buffer : Array[0..1024] of Byte ;
length : Integer ;
begin
Length := $12 ;
// 包头
Buffer[0] := $FF ; // Version
Buffer[1] := $23 ;
Buffer[2] := $0 ; // Length
Buffer[3] := $12 ;
Buffer[4] := $0 ; // Direction
Buffer[5] := $0 ; // ID
Buffer[6] := $0 ;
Buffer[7] := $0 ;
Buffer[8] := $0 ;
Buffer[9] := $0 ; // SenderID
Buffer[10] := $6F ;
Buffer[11] := $0 ; // ReceiverID
Buffer[12] := $6F ;
Buffer[13] := $0 ; // Repeat
Buffer[14] := $0 ; // Code
Buffer[15] := $0 ; // Subcode
Buffer[16] := $0 ; // Result
Buffer[17] := $0 ;
// 包体
{ Buffer[18] := $EE ; // Type
Buffer[19] := $13 ;
Buffer[20] := $10 ; // Length
Buffer[21] := $00 ;
Buffer[22] := $37 ; // Value 045182119897
Buffer[23] := $39 ;
Buffer[24] := $38 ;
Buffer[25] := $39 ;
Buffer[26] := $31 ;
Buffer[27] := $31 ;
Buffer[28] := $32 ;
Buffer[29] := $38 ;
Buffer[30] := $31 ;
Buffer[31] := $35 ;
Buffer[32] := $34 ;
Buffer[33] := $30 ;
Buffer[34] := $00 ; // Type
Buffer[35] := $14 ;
Buffer[36] := $8 ; // Length
Buffer[37] := $0 ;
Buffer[38] := $1 ; // Value
Buffer[39] := $0 ;
Buffer[40] := $0 ;
Buffer[41] := $0 ;}
ClientSocket1.Socket.SendBuf(Buffer,Length) ;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Buffer : Array[0..1024] of Byte ;
i : Integer ;
strShow : String ;
begin
Memo1.Lines.Add('************** BEGIN ***********************') ;
ZeroMemory(@Buffer[0],1024) ;
Socket.ReceiveBuf(Buffer,1024) ;
strShow := '' ;
for i := 0 to 1023 do
begin
strShow := strShow + IntToHex(Buffer[i],2) ;
end ;
Memo1.Lines.Add(strShow) ;
end;