我写了一个多线程的TCP/IP数据包传输的程序,但是测试中发现,Server和Client在同一台机器运行时,数据收发正常;但是分别在局域网的两台机器上测试时,却出现了Client正常接收一个数据包之后就混乱了,漏过了若干数据包,使得数据的接收顺序出现混乱,请问是什么回事?

解决方案 »

  1.   

    和我出现的问题差不多,我用rtp协议,用组播地址:224.1.1.1,Server和Client在同一台机器运行时,数据收发正常;在局域网的两台机器上测试时,却出现了Client正常接收1-2分钟后,收不到数据包。若将地址改为192.168.0.36(局域网内某一台机器),接收又完全正常。这是什么回事?
      

  2.   

    1.若发送包太小,系统会自动把若干个包合成一个大包发送,这是TCP的特点。检查一下收到的包里是否包含了若干小包。2.若有多个线程同时发,要能保证发送的顺序。
      

  3.   

    rtp协议是基于UDP的,也是无联接的。因此不可能保证数据完全按照顺序到达。