我利用udp实现文件传输,发送端发送n个包,每个包的大小约为80字节,但是现在的问题是不管n为多少(当然n>386),接受端都只能接受到386个左右的包,请问这可能是什么问题?谢谢!
发送端:(linux服务器)
while( fgets( buf , BUFLEN , file ) != NULL  ) // 取得ASCII文件的一行
{
   // ...
   sendto( ... ) ;
   count++ ;
   // ...
}
接收端:(EVC,模拟器)
while( ( i = recvfrom( dlg->sockfd , buf , 128 , 0 , NULL , NULL ) ) > 0 )
{
   // ...
   count++ ;
   // ...
}

解决方案 »

  1.   

    建议用 Wireshark 抓包分析一下,确认是发了n个包。还有会不会是发的太快了?不过我最大的疑惑是:传送文件怎么能用 raw UDP 呢?如何保证内容的完整性和顺序呢?
      

  2.   

    我在运行模拟器的电脑上抓包,确实抓到了发送个数的包,但是不知道这些包到了模拟器怎么就少了。
    PS:之所以直接用UDP只是为了做一个测试,不是为了真正传文件。另外请教应该用什么样的UDP来传文件才能保证完整性和顺序呢?我以前一直以为完整性和顺序都是由应用程序自己来处理的,难道有什么已经封装好了的类可以用?
      

  3.   

    总算搞定了,每发一百个包就sleep 1秒就可以了,估计是因为发包太快了,模拟器处理不过来,谢谢了!