在WINXP/DELPHI7平台下,我用UDP广播数据,若数据小于1480字节左右时广播成功,接收端也能成功接收数据;但是当广播得数据超过1480字节时,接收端收不到数据,广播失败,不知道是什么原因!!请大家帮忙!!

解决方案 »

  1.   

    如果你学过网络的话你就不会产生这样的疑问了,这就是以太网上的MTU问题,缺省情况下,所有的以太网设备包括网卡的最大传输单元(MTU)为1500字节,这个包括ip头共20字节,所以你实际使用的是1480字节,超过这个值有可能会被其他网络设备甚至自己(如果没有调过注册表的话)的网卡扔掉。以太网分两种格式一种是DIX的Ethernet II,一种是IEEE的802.3格式。这两种格式的最大传输单元好像稍微有点出入。具体细节你在google里搜索一下最大传输单元。是不是很专业??
      

  2.   

    To pinyu2003   MTU不等于需要传输的数据长度吧?
       难道我在网络上传输大的数据还得我来控制是否分包?
      

  3.   

    不对啊,MTU只是硬件网卡传送数据包时的最大值,不是udp协议的包最大值。udp协议包最大值是由win socket的内部缓冲大小决定的,socket在调用WSStartup后可以得到一个WSAData结构,WSAData.iMaxUdpDg就是udp的最大值,你可检查一下这个值,是0的话就不限制大小,一般好像是64K,但这个值如何设置你就在查winsocket的资料吧。
      

  4.   

    由于UDP不能保证数据的正确传输,所以传大的数据就得自己分包。
    http://expert.csdn.net/Expert/topic/2582/2582771.xml?temp=.4351618
      

  5.   

    to wangxiangsjz
       谢谢你的指点,能指点如何分包吗?