UDP发送端FPGA一次发过来256个包,包长512字节,包跟包之间的间隔是100ns,FPGA以及电脑的速度都是千兆的。我自己编写的UDP接收软件只能接收十几个包……在网上有看到说调用一次recvfrom要花掉大约5.7us,这个数据可靠吗?如果真是这样的情况的话,那岂不是只有缓冲区中的数据包可以收到了吗?该怎么改善这样的情况!!!有没有别的办法进行网络编程,可以使接收数据包的速度快些呢?(我用的是VC6.0,用vs2008的话,这种情况会得到改善吗?)
这个问题困扰了我好久,望各位高手帮忙分析分析呀!谢谢哦!

解决方案 »

  1.   

    发送速度太快,肯定很多包被抛弃了
    可以试图优化,如把包组合起来,用tcp等
      

  2.   

    只要发的和收的足够快,应该可以的,只是UDP会丢包,可靠传输用TCP,看一下这的socket例子吧:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  3.   

    我觉得你说的不科学啊. 
    系统内部会有个接收缓冲区 通过setsockopt(hSocket,SOL_SOCKET,SO_SNDBUF, ..., ...);  可以设置它的大小。 recvfrom 相当于copy内存。 cpu的速度是一定大于网络io的