NMUDP控件接收消息问题

newcoding 2006-07-19 11:23:37
我用NMUDP控件发送消息的代码如下:
procedure TFormMain.PopmenuMNUDP_SendMessageClick(Sender: TObject);
var
FStream: TMemoryStream;
strTemp:string;
begin
Form_SendMessage:=TForm_SendMessage.Create(Application);
Form_SendMessage.LB_Who.Caption:=iListItem.Caption;//接收人
Form_SendMessage.LB_Host.Caption:=iListItem.SubItems.Strings[2];//接收主机
Form_SendMessage.ShowModal;
if Form_SendMessage.FSend then
begin
FStream := TMemoryStream.Create;
strTemp:=iListItem.Caption+#1+iListItem.SubItems.Strings[2]
+#1+Form_SendMessage.Memo1.Text;
NMUDP.RemoteHost:=iListItem.SubItems.Strings[3];
try
FStream.Write(strTemp[1], Length(strTemp));
NMUDP.SendStream(FStream);
finally
FStream.Free;
end;
end;
Form_SendMessage.Free;
end;


procedure TFormMain.NMUDPDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer); //接收即时消息
var
FStream: TMemoryStream;
strTemp:string;
i:integer;
begin
FStream := TMemoryStream.Create;
try
NMUDP.ReadStream(FStream);
SetLength(strTemp, NumberBytes);
FStream.Read(strTemp[1], NumberBytes);
Beep;
Form_ReceivedMessage:=TForm_ReceivedMessage.Create(Application);
Exit;

i:=Pos(#1,strTemp);
Form_ReceivedMessage.LB_Who.Caption:=Copy(strTemp,1,i-1);//这里应该显示发送人的信息
strTemp:=Copy(strTemp,i+1,Length(strTemp));
i:=Pos(#1,strTemp);
Form_ReceivedMessage.LB_Host.Caption:=Copy(strTemp,1,i-1);
Form_ReceivedMessage.LB_Time.Caption:=DateTimeToStr(Now);
strTemp:=Copy(strTemp,i+1,Length(strTemp));
Form_ReceivedMessage.Memo1.Text:=strTemp;
Form_ReceivedMessage.ShowModal;
Form_ReceivedMessage.Free;
end;
finally
FStream.Free;
end;
end;

问题出在接收消息的时候!!
在接收信息窗体发送人IP地址和发送人显示的是接受人姓名和接收人的IP,内容是正确的
不知道为什么!!但是接受内容的确是对的!!就好象接收的流读的信息不太正确!在线等等
...全文
116 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
newcoding 2006-07-19
没人回答!!算了
回复
newcoding 2006-07-19
不行啊!!接收消息显示的还是自己的机器啊!!
回复
erhan 2006-07-19
FStream.Read(strTemp[1], NumberBytes);
在这句前看下FStream.Position是不是为0,如果不是0的话,把它置成0(从开始处)再读
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1575

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2006-07-19 11:23
社区公告
暂无公告