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