我想在我的socket 连接中设置 MTU 的大小,在网上看了一般是用 setsockopt 来设置 TCP_MAXSEG,可是Winsock 中好像没有TCP_MAXSEG 这个参数,请高手出招。

解决方案 »

  1.   

    IPPRO_TCP  
    --------------------------------------------------------------------------  
    TCP_MAXSEG TCP最大数据段的大小 int  
    获取或设置TCP连接的最大分节大小(MSS)。返回值是我们的TCP发送给另一端的最大 数据量,它常常就是由另一端用SYN分节通告的MSS,除非我们的TCP选择使用一个比 对方通告的MSS小些的值。如果此值在套接口连接之前取得,则返回值为未从另·—端 收到Mss选项的情况下所用的缺省值。小于此返回值的信可能真正用在连接上,因为譬 如说使用时间戳选项的话,它在每个分节上占用12字节的TCP选项容量。我们的TcP将 发送的每个分节的最大数据量也可在连接存活期内改变,但前提是TCP要支持路径MTU 发现功能。如果到对方的路径改变了,此值可上下调整。
      

  2.   

    MTU最大传输单元,这是路由器的参数。不是主机设置的。
      

  3.   

    MTU 路由器有这个参数,计算机网卡也有这个设置。
    现在出现的问题是计算机网卡的 MTU 比较大,路由器的 MTU 比网卡的小,传大批的数据时,会出现数据丢失情况。
    手工去改一下计算机网卡 MTU 值,与路由器的 MTU 值一致就可以了。