服务器:固定ip 固定端口号比如2000
客户端:任意一台PC 可能在路由之下。
客户端先给服务器发消息 
CUDP.Send(服务器IP,2000,消息内容);服务器可以在事件UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
里面获得客户端ip地址和端口号
ABinding.PeerIP  和  ABinding.PeerPort
这时我需要服务器给客户端回个消息,消息应该就是发往刚获得的
ABinding.PeerIP  和  ABinding.PeerPort
而客户端在给服务器发消息时 TIdUdpClient没有本机发送端口号属性设置。
而在客户端我需要用另一个TIdUdpserver控件来接收这个消息。
那么这个控件的监听端口号该如何设置呢?
谢谢帮忙给出代码
服务器是公网服务器ip和端口号固定,客户端给服务器发送消息 服务器可以收到,
但服务器如何给客户端发消息呢?
服务器可以通过客户端消息获得ip和端口号
可这个端口号可能是通过客户端那边路由器出来的端口号 应和客户机端口号不一样。
况且客户端发送时无法指定从何端口发送消息。
我需要在客户端用另一控件监听消息,那这个端口该如何设置呢?谢谢各位

解决方案 »

  1.   

    看来没人会,不过我解决了。
    就是拿TIdUdpserver发消息。
    收发消息都用TIdUdpserver 这个东西可以指定本地端口号
      

  2.   

    应该TIdUdpserver和TIdUdpClient配合起来用吧
      

  3.   

    TIdUdpserver就是使用监听端口发送出数据的,idudpclient使用的是随机端口
      

  4.   

    可能不好实现,这样试下行不行
    UDPCLIENT发给UDPSERVER,UDPSERVER将UDPCLIENT的端口发回给它,然后UDPCLIENT把端口告诉客户端的UDPSERVER,不知道能不能行
    不知道会不会被路由器给阻止了,这算不算是不请自来的连接请求
      

  5.   

    两边都要用TIdUdpserver,指定端口号,可以在事件里面捕捉,其实Udp协议中,两端都是对等的,TIdUdpClient没有存在的必要