以编程方式确定Win32上TCP连接上的数据包丢失

时间:2014-04-10 16:40:42

标签: winapi networking tcp winsock

我有一个使用winsock创建TCPIP套接字的win32应用程序。

这很好,除了在某些情况下我想知道有关实际套接字的统计信息。像发送,接收的数据包,发送的总字节数等等。但我想看到的最重要的数据是数据包丢失。

我无法找到获得此类数据的正确调用,我查看了getsockopt并找不到获取此类数据的好方法。

有没有办法在Windows API上获取TCP套接字的低级统计信息?

供参考我使用的是Windows 7(64位版本)

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试GetTcpStatisticsEx。它返回MIB_TCPSTATS结构,其中包含重传计数:

typedef struct _MIB_TCPSTATS {
  DWORD dwRtoAlgorithm;
  DWORD dwRtoMin;
  DWORD dwRtoMax;
  DWORD dwMaxConn;
  DWORD dwActiveOpens;
  DWORD dwPassiveOpens;
  DWORD dwAttemptFails;
  DWORD dwEstabResets;
  DWORD dwCurrEstab;
  DWORD dwInSegs;
  DWORD dwOutSegs;
  DWORD dwRetransSegs;    // <=========
  DWORD dwInErrs;
  DWORD dwOutRsts;
  DWORD dwNumConns;
} MIB_TCPSTATS;
  

<强> dwRetransSegs
  输入: DWORD

     

重新传输的段数。