c++ - 在不知道套接字的情况下关闭网络连接
问题描述
我正在尝试找到一种方法来关闭由另一个进程建立的网络连接。我的应用程序将自动运行过夜。如果网络资源已经在使用中(它不应该使用,但我没有假设),我需要在使用正确的凭据建立连接之前关闭连接。同样,不要假设现有连接具有正确的访问权限。
使用 GetTcpTable() 我可以在现有连接中搜索 IP。现在我需要关闭它。我可以找到很多关于基于其套接字关闭连接的信息,但我不知道套接字。我是否可以找出给定连接使用了哪些套接字(基于远程 IP?)或者是否有其他基于远程 IP 关闭网络连接的方法?
解决方案
在评论的帮助下,我整理了以下功能。请注意,在 Windows Vista 及更高版本上使用 SetTcpEntry 需要管理员权限。虽然这回答了上面的明确问题,但我仍在寻找与用户无关的解决方案。
// Fuction to close a collection of network connections
void networkConn::CloseRemoteIP(std::vector<MIB_TCPROW>& rows) {
for (MIB_TCPROW tcpObject : rows) {
tcpObject.dwState = MIB_TCP_STATE_DELETE_TCB;
DWORD ret = SetTcpEntry(&tcpObject);
if (ret) {
printf("\nError closing TCP connection. Windows returned: %lu", ret);
}
}
}
推荐阅读
- django - 如何将变量从视图传递给函数
- c++ - WIN 中的相同 DevIL 项目在 Ubuntu 中失败
- regex - 解析 Alexa 以获取排名信息
- angular-material - mat-card-content 溢出角材质卡
- javascript - 是否可以在剑道图表上设置最小和最大缩放?由于许多项目,我的图表在缩小时使类别轴标签难以辨认
- java - 尝试在 android studio 中连接 jsoup 时,模拟器应用程序崩溃
- java - 约束布局中的 dp 和 wrap_content
- java - 当用户不输入时,如何在 JOptionPane 中显示消息对话框?
- haskell - 有错误折叠的类型类吗?
- python - 如何阻止文件路径和信息显示在 python 脚本执行中