怎么发送和接收记录类型数据?(100分)

  • 主题发起人 主题发起人 xywen
  • 开始时间 开始时间
X

xywen

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个记录类型数据:
Type
TDictate=record
DictateType:string;
DictateText:string;
end;

发送:
var
SendDictate:TDcitate;
begin
SendDictate.DictateType:='Login';
SendDictate.DictateText:='UserName';

ClientSocket1.Socket.SendBuf(SendDictate,SizeOf(SendDictate));
end;

接收:
var
ReceiveDictate:TDictate;
begin
ServerSocket1.Sokcet.ReceiveBuf(ReceiveDictate,SizeOf(ReceiveDictate));

Showmessage(ReceiveDictate.DictateType);//这里会出错
Showmessage(ReceiveDictate.DictateText);//这里会出错
end;


请问我该如何使用TClientSocket和TServerSocket将该记录发送和接收?

 
是否要用地址符?
ClientSocket1.Socket.SendBuf(@SendDictate,SizeOf(SendDictate));
 
我错在哪里?请说明。
 
如果是两个String类型应该不能直接发
如果改成固定长度String就可以,而且还有加Packed参数
比如:
Type
TDictate= packed record
DictateType:string[20];
DictateText:string[20];
end;
然后用SendBuff就可以了
 
字符串必须是定长的吗?
可我在使用中就要求长度可以变化的,怎么办?
 
To 张无忌:
我就是找不到可参考的书才来这里的,你有必要说这种话吗?
 
世面上这类的书很多啊,我所见到的就不下5本,C/C++的更多
 
请把书名列出来,我去查书。
 
那就把两个字符串分两次发,直接发是不行的
 
To Tassadar
假如在我定义的记录中,有一个字符串类型字段长度很大,怎么办?能写出代码吗?
 
To Tassadar
你前面说的使用定长字符串进行传输我已测试通过。
但有没有方法解决使用不定长字符串进行传输的问题呢?

To 张无忌
再次请问,您说的那几本书叫什么名字,我会去找。
 
To 张无忌
请问你为什么不回答?为什么总到谈实质问题的时候你就不说了呢?
 
接受答案了.
 
楼主不用太着急,这里有一个很久前写的代码,你看看,也许对你有帮助
ftp://61.152.210.98/spy.zip
 
后退
顶部