初用UDP的问题?(300分)

  • 主题发起人 主题发起人 goldbaby
  • 开始时间 开始时间
G

goldbaby

Unregistered / Unconfirmed
GUEST, unregistred user!
用UDP向四台机器发送。
所有的机器,程序启动时没问题,每次接收很少的内容。但时间长了,
发现有的机器不接收了,需要程序重新启动,有没有隔段时间UDP“复位”
功能的操作可以解决?
或者别的解决办法?
 
你的代码能贴出来看看吗?
还有你的程序的接受缓存要设大一些,最好
在接受数据之前FillChar(buf,bufsize,0)
 
这个问题我也遇到过
有时候要把程序关掉再打开才行

难道UDP的不稳定握手?
 
To wangfu:
如果Udp不用accept建立一个虚拟连接,
他可以接受任何可以接受到发送到他的监听的端口的数据...
 
因为几次UDP接受可能同时到达,有可能是因为你的Buffer不够!

帮你UP!
 
用MemoryStream流来接收数据!!
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
MyStream: TMemoryStream;
MyStringList: TStringList;
begin
MyStream := TMemoryStream.Create;
MyStringList := TStringList.Create;
NMUDP1.ReadStream(MyStream);
MyStream.Position := 0;
MyStringList.LoadFromStream(MyStream);
Edit1.Text := Trim(MyStringList.Text);
end;
 
在使用代理时,udp协议如果不绑定代理服务器会自动改变自己的端口,如果是这种情况可以在程序中加入代理协议
 
多人接受答案了。
 
后退
顶部