本帖最后由 I_Not_sponge 于 2009-08-14 10:33:08 编辑

解决方案 »

  1.   

    分片,也就是要按流的方式处理,可以做一个buffer层,它来负责按MTU划分段,然后,按段发送。同时接收端也要注意,也要buffer方式,这个控制有很多办法,可以采用拉模式,推模式,可能会造成丢片;可以参考udt。
      

  2.   

    IP数据报文分片是IP协议自己做的事,在IP头部有一个是否允许分片的标志。
      

  3.   

    但是我查过资料在2003系统上IP是自己分包的 在XP上就不会自己分包
      

  4.   

    我不能在上面的代码里面写一个分包发送的方法吗?
    自己做个buffer层怎么弄呀?%>_<%
    我才接触这个东西不到一个礼拜
    能传个例子看下嘛?谢了
      

  5.   

    在公网上,减小到1k(1024)字节以内就可以了。另外,好象公网不支持组播 多播 ,只能轮询。但用ace来做的话,应该是不可靠的传输吧最好还是自己实现可靠传输为好。或用一些开源的。
      

  6.   

    我现在做的是测试
    我发现在2003系统上就可以发送8K的数据,在XP上最多只能发送1471字节的数据
    这是为什么?
      

  7.   


    struct package
    {
    int id;//包的id
    int count;//分片数量
    int total_size;//总大小
    int index;//当前分片索引
    int size;//当前大小
    char data[1024];数据
    }
      

  8.   

    这个很不错,不过我想在网络上发送数据还是不要超过MTU1500的好,平白无故增加复杂度
      

  9.   

    谁能基于前面的代码给我写出个例子看下呀~
    很着急 %>_<%
    谢谢高人了~
      

  10.   

    着急也没有用,可以用开源的raknet或udt来试试。