在线等!NMUDP控件只能传送字符串吗?可以传送记录类型吗? (50分)

  • 主题发起人 主题发起人 nywjx
  • 开始时间 开始时间
N

nywjx

Unregistered / Unconfirmed
GUEST, unregistred user!
如提。我的记录类型是
TSend=record
fromip:string;
toip:string;
code:integer;
sendstr:string;
end;
怎么通过NMUDP控件传送?
 
传过去在转换阿
 
呵呵,我就是问怎么传,怎么转换啊
 
sendbuf,readbuf就可以了,不过这年头竟然还有人使用NMUDP控件啊
 
为什么不用呢?100M的局域网内只有两三台机器,用什么呢?
 
var
SendMStream:TMemoryStream;
Buf:TSend;
begin
SendMStream:=TMemoryStream.Create;
try
SendMStream.Write(Buf,length(TSend));
NMUDP1.SendStream(SendMStream);
finally
SendMStream.Free;
end;
end;
 
我也是这么发送的啊,接收部分是这样的:
procedure TForm1.NMUDPClientDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
CurSend:TSend;
begin
if (NumberBytes=-1) then exit;

NMUDPClient.ReadStream(MSC);
MSC.Read(CurSend,sizeof(CurSend));
if CurSend.FromIP<>FromIP then exit;
if CurSend.Code=1 then
begin
showmessage('received');
end;

end;
 
有问题吗?
 
可以传,但是在结构体里不能够有string类型,应该用char[200]或整形。
发送方:
TSend_Control = record
ControlInfo : integer; //控制协议信息
User_ID : integer; //接收信息的用户ID
{
9999:本班所有学生
}
TakeBack_StuID : integer; //被收回权限的学生ID
Endow_StuID : integer; //要赋予权限的学生ID
Temp_One : integer; //临时变量
ss:char[255];
end;
CUDP.SendBuffer(Send_Control,Sizeof(Send_Control));

接收方:
SendControl结构体和上面的一样就可以了。
Size := AData.Size;
AData.Position := 0;
AData.ReadBuffer(SendControl,Size);

 
好,解决了。谢谢
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部