发送端每次发送数据大小不定(几个字节到几K字节),频率不定(可能连续发送好几个包,且每个包大小也不定;也可能很久发送一个包)。但要求每次发送的数据包在接收端独立(也就是接受到的包应该和发送的包内容一致,否则就会出错)。
         但是TCP发送时要进行包的重新组合,使得接收端数据包和发送端不一致。请问怎么解决这个问题?让我能够按照发送端的包的内容收到发送的包 ?

解决方案 »

  1.   

    放心不会出错。socket在IP层有自己的分片,你不用操心,如果不一致肯定是其它原因,我一次发送过20M,都没问题。send大包不成功可能是你接收缓冲池太小,导致传输太慢。
      

  2.   

    那你自己在包头定义一些协议不就ok,比如发送将组装包头为:ip地址,包id号,等
      

  3.   

    原来你想区分包。
    如果你发送每个包时都创建一个socket进行connect,而接受时也新建一个socket来接受,那么一个socket就只会收到一个包了。我用多线程发送时就用这个方法,不过这样发送小数据时显得代价较高。如果都是使用一个socket来发送,那你只能自己加一些辅助信息加以区分。比如加上同步字啊,长度等信息加以区分了。
      

  4.   

    谢谢!
    我主要是考虑多了。
    我担心TCP也有出错,所以弄得很复杂。
    如果把TCP看成绝对不出错的协议,就简单了。
    只要每个包指定包的大小就可以了。
      

  5.   

    如果TCP都出错,那他还叫国际安全协议吗?:)