NMUDP控件接收消息问题
我用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,内容是正确的
不知道为什么!!但是接受内容的确是对的!!就好象接收的流读的信息不太正确!在线等等