如果使用组播形式,假设有多台机器循环多次发一个包(包的大小很小,考虑在512b以下,不产生丢包的情况)单看其中一台机器,这台机器会不会把一些包组合后,在传给你?
也就是说:
 假设这些机器上的程序如下:
  for(int i=0;i《1024;i++)
  {
    sendto("china");
   }
 那么其中一台机器
  char ch【1024】;
  recvfrom(ch);
  ch可不可能会等于"chinachina"或“chinachi”;如果产生,“chinachina”可不可能是分别由两台不同的机器传输来的?(我想大概是不可能,要不然最后一个参数是什么呢!),如何避免?

解决方案 »

  1.   

    不可能的,udp是有界的,也就是说,每个包都是独立的。这不同于tcp,它是基于流的。
      

  2.   

    udp是有界的
    udp不保证传输的正确性阿
    所以还是有可能丢包或者传错的
      

  3.   

    我设置断点时的确看到了"chinachina"
      

  4.   

    UDP是使用IP协议在计算机数据交换时提供一定服务的通信协议。UDP是TCP的另外一种方法,象TCP一样,UDP使用IP协议来获得数据单元(叫做数据报),不象TCP的是,它不提供包(数据报)的分组和组装服务。而且,它还不提供对包的排序,这意味着,程序程序必须自己确定信息是否完全地正确地到达目的地。如果网络程序要加快处理速度,那使用UPD就比TCP 要好。TFTP就使用UDP而不使用TCP。UDP提供两种不由IP层提供的服务,它提供端口号来区别不同用户的请求,而且可以提供奇偶校验。在OSI模式中,UDP和TCP一样处于第四层,传输层。http://www.longen.org/S-Z/details~z/udp.htm