模仿一些实例做的最简单的局域网聊天程序,但执行下面这段的时候就会报错,
说stream write errorprocedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  MyStream:TMemoryStream;
  TmpStr:String;
begin
  MyStream:=TMemoryStream.Create;
  try
    NMUDP1.ReadStream(MyStream);//就是这句,总是出错啊!!!!
    SetLength(TmpStr,NumberBytes);
    MyStream.Read(TmpStr[1],NumberBytes);
    Memo1.Lines.add(TmpStr);
  finally
    MyStream.Free;
  end; end;不知怎么解决,高手给看看吧。

解决方案 »

  1.   

    procedure TDataModule1.ServerUDPDataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      myStream:TMemoryStream;
      TempString:String;
    begin  myStream:=TMemoryStream.Create;
      try
        if NumberBytes<>-1 then
            begin             
            ServerUDP.ReadStream(myStream);
            Setlength(TempString,NumberBytes);
            myStream.Read(TempString[1],NumberBytes);
            tempString:=decode(TempString);
            MessageHandle(TempString);
            end;
      finally
        myStream.Free;
     end;
    end;
      

  2.   

    NumberBytes=-1时,表示你接收的信息流为空,
      

  3.   

    请教这个NumberBytes<>-1 表示什么?我加了后,发现这个条件似乎满足不了。
      

  4.   

    你有msn吗?我的是[email protected] 多谢我在本机上试验,发现接受的信息流总是为空,到NMUDP1.ReadStream(MyStream);就过不去了,报错。
      

  5.   

    再详细说一下这个练习题,用NMUDP控件,简单的局域网聊天,我参照网上一些文章写的,我想在本机上执行试试看,但总出现错误。还有就是,我的机器ip是动态分配的,是不是有影响?
      

  6.   

    加了你的MSN,你不在线,在线我在和你说
      

  7.   

    还有就是你所连接的对方的IP地址和端口没有向你开放,你的NMUDP连不上也会有此问题,