长时间没有搞网络编程,有些问题忽然想不起来了,特请教:1.TCP连接方式中,客户机设定要连接的服务器的IP及端口后发出连接请求,那么客户机本地的发送、接收数据的端口是什么?是客户机操作系统随机分配的吗?服务器接收和发送数据用的是同一端口吗?2.UDP连接方式中,本地机设定绑定接收端口,那么用于向别的机器发送数据的本地端口和本地绑定接收端口是同一个端口吗?

解决方案 »

  1.   

    另外,TCP可以穿越NAT吗?也就是说,TCP连接中,客户机在共享IP的局域网内,服务器在公网并独享IP,那么TCP连接是否一直稳定?服务器任何时候都能将数据准确发送到局域网内相应的计算机吗?服务器和客户机两者之间能一直稳定通讯吗?
      

  2.   

    回答楼上的问题
    tcp可以如楼主说的方法,穿越nat,提供稳定的通信
      

  3.   

    只要网络没问题, TCP连接是可靠的
      

  4.   

    TCP:
    Client的端口是OS随机分配的;
    Server的在通信中使用两类端口,监听端口和数据端口,监听端口只是负责接受连接请求,在接受请求后监听端口继续监听,OS会再分配一个端口与Client交换数据。
    UDP:绑定方式和TCP类似。总的说来,在OS中同一资源不能被同时占用。除需要从外部主动与内部协商通的信协议外(如FTP),NAT可以转发几乎所有协议包。
      

  5.   

    我听说TCP也不能穿透NAT,是不是指这种模式:
    两台通过TCP连接的机器处于不同的局域网中?
      

  6.   

    NAT大概就是不同局域网中,然后建立TCP连接
      

  7.   

    NAT大概就是不同局域网中,然后建立TCP连接
    ----您的意思是不同局域网中的两台机器用TCP方式连接会存在不能穿透NAT(联不上)的问题?而一台是局域网内机器,另一台是独立IP公网机器用TCP通讯就会一直连通,没有不能穿透NAT(NAT session过一段时间失效)的问题?
      

  8.   

    好像还没有什么办法能够保证100%可以穿越NAT的,因为可能NAT类型不同,这样的情况就没办法了只有通过服务器中转数据"而一台是局域网内机器,另一台是独立IP公网机器用TCP通讯就会一直连通"
    能不能连通还要看两台机器之间是否有防火墙屏蔽了你所使用的端口
      

  9.   

    好像还没有什么办法能够保证100%可以穿越NAT的,因为可能NAT类型不同,这样的情况就没办法了只有通过服务器中转数据
    -------
    也就是说除去防火墙拦截外,具有独立公网IP的服务器与其它局域网内的客户机的通讯不用考虑NAT问题?
      

  10.   

    问一下 Server的2个端口怎么来啊  是在程序中自己设定的吗