在编写网络程序时我一直有个疑问。
我们知道:
在TCP通讯中,服务器和客户端在链接时必须设置对方的IP和端口,
而在UDP通讯中,双方各自监听对方的端口才能获得对方发给自己的信息。我的疑问是:
    既然在通讯之前必须知晓对方的端口,如果编写一个UDP聊天程序,
客户端的端口对于服务器端是未知的,服务器端又如何得知客户端的端口呢?
    当然,服务器端可以不断监听自己的端口,当发现有客户端链接时可
以获得客户端的端口。但如果服务器的端口也会不断改变时又该怎么办呢?
客户端又该如何获得改变后的服务器端口呢?

解决方案 »

  1.   

    query all the ports one by one? a stupid way...
      

  2.   

    UDP不是点对点的通信,不需要建立连接就可以通信的。一般给同一组的人发信息可以用它。
    知道端口建立连接的通信是tcp的。
      

  3.   

    服务器端口会变,那么需要以其他方式通知客户端,否则不管是TCP或者UDP都无法通信。
      

  4.   

    ”在TCP通讯中,服务器和客户端在链接时必须设置对方的IP和端口“:通常是S端设置好自己的地址信息(IP+端口)然后绑定-》监听-》接受连接请求,对于客户端的地址信息可以从接受到的连接中获得。 而C端只要设置好S端的地址信息就可以了(IP+端口)然后 连接-》发送/接收数据
      

  5.   

    socket五元组,任何一个改变了此连接就不行了(TCP),所以一般服务器段是不变的
    (udp)但是服务器段可以监听自己某个端口,来动态获得对方的端口,于是可以互相通信
    所以这个都是有一定机制的,关键是可控