IdUDPClient发送数据时好象是随机的,我想知道刚才发送数据时使用的是哪个端口号,怎么办?(50分)

  • 主题发起人 主题发起人 fan2588
  • 开始时间 开始时间
F

fan2588

Unregistered / Unconfirmed
GUEST, unregistred user!
IdUDPClient发送数据后,我想使用它的发送端口作为IdUDPServer的接收端口,可是我怎么知道刚才发送时使用的是哪个端口号啊?

我使用IdUDPClient1.Binding.Port:=6000;可是我在接收端ABinding.PeerPort扑捉,发先就不是6000,而是1221,客户端和服务端在同一个电脑上.
 
不靠接收端,仅靠发送端恐怕无法获得发送数据的端口。
根据Send方法一直往下追踪,到最后都没有出现过发送端口。
 
如果靠接收端的话,那在公网上经过端口变换后,也是没有办法获取到真实的发送端口的啊
 
用IDUDPServer来发数据就好了嘛。
 
指定发送端口用下面的方法
//发送UDP数据
procedure TForm1.SendButtonClick(Sender: TObject);
var ss:string;
begin
ss:=Memo1.Text;
IdUDPClient1.Active:=false; //设置UDP发送IP和PORT
IdUDPClient1.Port:=SpinEdit1.Value; //目标接收端口
IdUDPClient1.Binding.Port:=SpinEdit2.Value;//本机发送端口
IdUDPClient1.Host:=Edit1.Text;//目标IP地址
IdUDPClient1.Binding.Bind;//绑定
IdUDPClient1.Active:=true;
Idudpclient1.Send(ss);
IdUDPClient1.Active:=false;
end;
 
谢谢
liyinwei,东兰梦舞
 
后退
顶部