有关UDP接收数据的问题(20分)

  • 主题发起人 主题发起人 anndy1999
  • 开始时间 开始时间
A

anndy1999

Unregistered / Unconfirmed
GUEST, unregistred user!
这是发送端发送的UDP结构体数据包(c++的),
typedef stuct stu_data
{
char : name[12];
int : id;
char : tele[12];
char : other[100];
}

在delphi中接收端:
type
DBSTUDENT=record
name : string;
id : integer;
tele : string;
other : string;
end;

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
stu : DBSTUDENT;
name1 : string;
id1 : integer;
tele1 : string;
other1 : string;
begin
AData.ReadBuffer(stu,AData.Size);
name1 := stu.name;
id1 := stu.id;
tele1 := stu.tele;
other1 := stu.other;
end;

现在的问题,接收到的name1,tele1,other1显示不出来,就像空白一样,而id可以显示,但内容不对。
 
传输的时候有没有设置命令号?
对传输的不同信息分类,比如如果命令号是‘1’你就知道‘1’代表什么数据,‘2’是代表什么数据,如果象你这样传的话肯定会乱的
 
DBSTUDENT定义不对。试一下
type
DBSTUDENT=record
name : string[12];
id : integer;
tele : string[12];
other : string[100];
end;
 
类型一样就行了,和大小没关系
 
知道原因了,原来是高低字节序的问题,发送方是64位机,而我的接收方是32位机。我转换一下就搞定了。
 
该散分了啊,呵呵
 
多人接受答案了。
 
后退
顶部