- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 Python 测试程序,用于测试另一个软件组件的功能,我们称后者为被测组件 (COT)。Python 测试程序通过持久的 TCP 连接连接到 COT。Python 程序为此使用 Python 套接字 API。现在为了模拟物理链接的故障,我想让 Python 程序关闭套接字,但没有适本地断开连接。IE。我不想再在 TCP channel 上发送任何内容,包括任何 TCP SYN
/ACK
/FIN
。我只想让套接字安静下来。它必须不再响应远程数据包。
这并不像看起来那么容易,因为在套接字上调用 close
会将 TCP FIN
数据包发送到远程端。 (优雅断开连接)。那么如何在不发送任何数据包的情况下终止套接字呢?
我无法关闭 Python 程序本身,因为它需要维护与其他组件的其他连接。有关信息,套接字在单独的线程中运行。所以我想到了硬生生的杀掉线程,但这也不是那么容易的。 ( Is there any way to kill a Thread? )
有什么想法吗?
最佳答案
您不能从用户态进程执行此操作,因为内核网络堆栈仍保留与给定 TCP 连接相关的资源和状态。如果您终止整个进程,内核将发送一个 FIN
到另一端,因为它知道您的进程有哪些文件描述符,并将尝试正确清理它们。
解决此问题的一种方法是使用防火墙软件(在本地或中间机器上)。调用一个脚本,告诉防火墙丢弃来自/到给定 IP 和端口的所有数据包(这当然需要适当的管理权限)。
关于python - 如何在不适当关闭套接字的情况下突然断开套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458206/
这段代码在 Java 中的等价物是什么?我放了一部分,我对 I/O 部分感兴趣: int fd = open(FILE_NAME, O_WRONLY); int ret = 0; if (fd =
我正在尝试将维度为 d1,d2,d3 的张量 M[a1,a2,a3] reshape 为维度为 d2, d1*d3 的矩阵 M[a2,a1*a3]。我试过 M.reshape(d2,d1*d3) 但是
我是一名优秀的程序员,十分优秀!