NMUDP帮助中,ReadStream方法的示例代码procedure TForm1.Button1Click(Sender: TObject);
var
MyStream: TMemoryStream;
C: String;
begin
C := Edit1.Text;
NMUDP1.RemoteHost := '127.0.0.1';
NMUDP1.ReportLevel := Status_Basic;
NMUDP1.RemotePort := 6668;
MyStream := TMemoryStream.Create;
try
MyStream.Write(C[1], Length(C));
NMUDP1.SendStream(MyStream);
finally
MyStream.Free;
end;
end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);
var
C: String;
MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
try
NMUDP1.ReadStream(MyStream);
SetLength(C, NumberBytes);
MyStream.Read(C[1], NumberBytes);
Memo1.Lines.Add(C+': received '+IntToStr(NumberBytes)+' bytes from '+FromIP+' on port '+IntToStr(Port));
finally
MyStream.Free;
end;
end;运行时
NMUDP1.ReadStream(MyStream);
此句上出现运行时异常 Stream Write Error 错
var
MyStream: TMemoryStream;
C: String;
begin
C := Edit1.Text;
NMUDP1.RemoteHost := '127.0.0.1';
NMUDP1.ReportLevel := Status_Basic;
NMUDP1.RemotePort := 6668;
MyStream := TMemoryStream.Create;
try
MyStream.Write(C[1], Length(C));
NMUDP1.SendStream(MyStream);
finally
MyStream.Free;
end;
end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);
var
C: String;
MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
try
NMUDP1.ReadStream(MyStream);
SetLength(C, NumberBytes);
MyStream.Read(C[1], NumberBytes);
Memo1.Lines.Add(C+': received '+IntToStr(NumberBytes)+' bytes from '+FromIP+' on port '+IntToStr(Port));
finally
MyStream.Free;
end;
end;运行时
NMUDP1.ReadStream(MyStream);
此句上出现运行时异常 Stream Write Error 错
而在下面的read反而出错了
加入一句:MyStream.Seek(0,sobeginning);
procedure TForm1.Button1Click(Sender: TObject);
var
MyStream: TMemoryStream;
C: String;
begin
C := Edit1.Text;
NMUDP1.RemoteHost := '127.0.0.1';
NMUDP1.ReportLevel := Status_Basic;
NMUDP1.RemotePort := 6668;
MyStream := TMemoryStream.Create;
try
MyStream.Write(C[1], Length(C));
MyStream.Seek(0,soBeginning);
NMUDP1.SendStream(MyStream);
finally
MyStream.Free;
end;
end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);
var
C: String;
MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
try
NMUDP1.ReadStream(MyStream);
SetLength(C, NumberBytes);
MyStream.Seek(0,soBeginning);
MyStream.Read(C[1], NumberBytes);
Memo1.Lines.Add(C+': received '+IntToStr(NumberBytes)+' bytes from '+FromIP+' on port '+IntToStr(Port));
finally
MyStream.Free;
end;
end;