- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过Delphi 7中的GetExtendedTcpTable查看TCP和UDP协议(protocol)的IPV6连接。我已经编写了显示连接信息的代码。问题是我的连接状态为“0”。据我所知,有效状态为 1-12。下面是我的代码,有人可以指出错误。
const
ANY_SIZE = 1;
type
PTMib_TCP6Row = ^TMib_TCP6Row;
TMib_TCP6Row = packed record
dwState : DWORD ;
LocalAddr : IN6_ADDR ;
dwLocalScopeId : DWORD ;
dwLocalPort : DWORD ;
RemoteAddr : IN6_ADDR ;
dwRemoteScopeId : DWORD ;
dwRemotePort : DWORD ;
dwProcessId : DWORD ;
end;
PTMIB_TCP6TABLE = ^TMIB_TCP6TABLE;
TMIB_TCP6TABLE = packed record
dwNumEntries : DWORD;
Table: array[0..ANY_SIZE - 1] of TMib_TCP6Row;
end;
function GetTCPEntries: Boolean;
var
tcpTable1: PTMIB_TCP6TABLE;
dwSize1, dwSize2, dwSize3, I: DWORD;
begin
Result := False;
dwSize1 := 0;
dwSize2 := 0;
dwSize3 := 0;
if GetExtendedTcpTable(nil, @dwSize1, False, AF_INET6, TCP_TABLE_OWNER_PID_ALL, 0) = ERROR_INSUFFICIENT_BUFFER then
begin
GetMem(tcpTable1, dwSize1);
GetExtendedTcpTable(tcpTable1, @dwSize1, False, AF_INET6, TCP_TABLE_OWNER_PID_ALL, 0);
dwSize2 := tcpTable1^.dwNumEntries;
for i := 0 to dwSize2-1 do
begin
//Form1.UpdateLog('State of connection = ' + IntTostr(tcpTable1.Table[i].dwState) + #13#10);
end;
FreeMem(tcpTable1, dwSize1);
end;
end;
在我的例子中,dwState 是 0。
我已经看到 sysinternals 程序“TCPView.exe”的输出,该输出显示连接状态为“正在监听”,因此我的机器没有任何问题。
帮助将不胜感激。提前致谢
最佳答案
根据文档,当您传递 AF_INET6 和 TCP_TABLE_OWNER_PID_ALL 时返回的结构似乎是 MIB_TCP6ROW_OWNER_PID
.
但是该结构看起来与您的 TMib_TCP6Row
声明完全不同。这就是为什么您从 TMib_TCP6Row
记录中读取的值不是您所期望的值。
阅读 GetExtendedTcpTable
的文档。在 AF_INET6
表中,它列出了 MIB_TCP6TABLE_OWNER_PID
作为与 TCP_TABLE_OWNER_PID_ALL
关联的结构。 MIB_TCP6TABLE_OWNER_PID
有一个 MIB_TCP6ROW_OWNER_PID
数组。
最重要的是,您在界面一侧使用的记录与另一侧使用的结构不匹配。
<小时/>其他一些评论:
GetExtendedTcpTable
的返回值。关于delphi - 为什么 GetExtendedTcpTable 中的连接状态为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406467/
我是Go新手,需要在Windows中抓取网络信息。我尝试使用指向字节数组的指针作为参数调用 GetExtendedTcpTable(),但调用后什么也得不到。 var ( iphelp =
我想通过Delphi 7中的GetExtendedTcpTable查看TCP和UDP协议(protocol)的IPV6连接。我已经编写了显示连接信息的代码。问题是我的连接状态为“0”。据我所知,有效状
我已经实现了以下代码,用于通过函数 getTCPExtendedTable 获取 TCP 信息: const ANY_SIZE = 1; iphlpapi = 'iphlpapi.dll'
我使用此代码获取我的 PC 中已打开端口的列表以及使用每个端口的应用程序。 string Port::GetListOfTcpPorts() { string ApplicationName
我在使用“GetExtendedTcpTable”时遇到了一些麻烦。当我尝试运行我的脚本时,我收到如下消息: AssertionError: [Error 0] The operation compl
我制作了一个应用程序来观看本地 pc 的事件 tcp/udp 连接。现在,我的连接列表是静态的,如何使其成为动态的?我尝试使用 Timer 事件,但 GetExtendedTCPTable 返回完整的
我已经使用 JNA 实现了 GetExtendedTcpTable(),但是当我使用该函数时,收到错误: java.lang.IndexOutOfBoundsException: Bounds exc
我调用 GetExtendedTcpTable通过 Python 中的 ctypes。 为此,我声明了以下结构: class MIB_TCPROW_OWNER_PID(ctypes.Struc
我是一名优秀的程序员,十分优秀!