我在使用NMUDP编程的时候,遇到了一个奇怪的问题.代码见下面!发送数据的过程
var
mystream:TmemoryStream;
tempStr:string;
begin
Nmudp1.RemotePort:=StrToInt('5000');
Nmudp1.RemoteHost:='219.133.51.29';
tempStr:='hello!';
try
mystream:=TmemoryStream.Create;
mystream.Write(tempStr[1],length(tempStr));
Nmudp1.SendStream(mystream);
finally
mystream.Free;
end;
受到数据的过程
var
mystream:TmemoryStream;
tempStr:string;
begin
mystream:=tmemoryStream.Create;
try
nmudp1.ReadStream(mystream);//在此行报错
SetLength(tempStr,NumberBytes);
Mystream.Read(tempstr[1],NumberBytes);
memo1.Lines.Add(tempstr);
finally
mystream.Free;
end;
我点击了发送数据的按钮后,报错stream write error ,奇怪的是,这是在接受数据时报错的,而我的NMUDP1.localport设置为2200,本地机器的ip为222.212.22.90(我用adsl上网),我进行了跟踪发现,NMUDP1受到了来自219.133.51.29,端口为5000的数据包,但是在这个ip上,不是我的机器,更不可能有我的程序啊,它怎么会向我的程序发数据包呢?更奇怪的时期,当我没有上adsl使用本地ip为192.168.0.1,程序内容不变时,它就不包错了,跟踪表明它不会受到来自219.133.51.29,端口为5000的数据包,即根本就没有执行接受数据的过程,这是怎么会事情啊,请各位高手指点!
var
mystream:TmemoryStream;
tempStr:string;
begin
Nmudp1.RemotePort:=StrToInt('5000');
Nmudp1.RemoteHost:='219.133.51.29';
tempStr:='hello!';
try
mystream:=TmemoryStream.Create;
mystream.Write(tempStr[1],length(tempStr));
Nmudp1.SendStream(mystream);
finally
mystream.Free;
end;
受到数据的过程
var
mystream:TmemoryStream;
tempStr:string;
begin
mystream:=tmemoryStream.Create;
try
nmudp1.ReadStream(mystream);//在此行报错
SetLength(tempStr,NumberBytes);
Mystream.Read(tempstr[1],NumberBytes);
memo1.Lines.Add(tempstr);
finally
mystream.Free;
end;
我点击了发送数据的按钮后,报错stream write error ,奇怪的是,这是在接受数据时报错的,而我的NMUDP1.localport设置为2200,本地机器的ip为222.212.22.90(我用adsl上网),我进行了跟踪发现,NMUDP1受到了来自219.133.51.29,端口为5000的数据包,但是在这个ip上,不是我的机器,更不可能有我的程序啊,它怎么会向我的程序发数据包呢?更奇怪的时期,当我没有上adsl使用本地ip为192.168.0.1,程序内容不变时,它就不包错了,跟踪表明它不会受到来自219.133.51.29,端口为5000的数据包,即根本就没有执行接受数据的过程,这是怎么会事情啊,请各位高手指点!
用indy的idudpserver