我在pc机上写了个程序与单片机通过网口通信,使用的是socket套接字。现在想增加个功能,就是在状态栏里显示通信速率,就像迅雷看看进度条上的那个。可是不知道速率如何获得,vc里面有相应含数吗?那位大侠给指点下,在此谢过了。

解决方案 »

  1.   

    周期性取一段时间的流量,GetAdapterInfo()获取当前数据,然后自己计算一下
      

  2.   

    GetAdapterInfo()这个函数是哪里面的?我在msdn上没找到啊,我的程序现在的通信量很小,这样做是不是会老是〇啊
      

  3.   

    我试过用winpcap库的统计模式可以轻松搞定
      

  4.   

    我试过用winpcap库的统计模式可以轻松搞定
    请提供代码
      

  5.   

    请参见winpcap文档中的示例代码
      

  6.   

    我刚学网络编程两周,只会用些sendto,recvfrom,send,connect 之类的简单函数。楼上说的太高深了,看不懂啊。唉,这个功能怎么这么麻烦啊
      

  7.   

    那你就自己记录呗..每次接收发送数据都记录下发送的时间和数据大小.然后一除不久好了么?
    Send(dword datasize)
    {
         dword d1 = gettime();
         send(...);
         dword d2 = gettime();
         float fspeed = (d2-d1)/datasize;
    }
      

  8.   

    不是很精确,但可以用
            long dwStart,dwChBegin,dwChEnd; dwStart = getTickCount();          //for windows GetTickCount()
    dwChBegin = getTickCount();
    int curSize(0);        curSize += ret;            //ret 接收数据大小
    dwChEnd = getTickCount();
    if(dwChEnd - dwChBegin > 1000)          1秒一次
    {
    int elcapse = (dwChEnd-dwStart)/1000;
    int kbSize = curSize/1000;
    int iSpeed = kbSize/elcapse;
    string strMsg = "下载速度 :" + int2str(iSpeed) + "kbyte/s";
    dwChBegin = dwChEnd;

    }gl