是否有方法或工具仅将连接重置为一侧?
例如tcpkill
向两侧发送RST数据包,但我需要模拟连接左半打开的情况:客户端关闭连接,但服务器不知道它。
Iptables配置也可能有用,当通过一些短暂超时它开始拒绝客户端数据包时:--reject-with tcp-reset
答案 0 :(得分:2)
在Java程序中,对从close()
获得的输入流或输出流调用Socket
将关闭连接的一侧。
但是,您似乎在询问一个应用程序是否可以“半关闭”属于另一个进程的TCP / IP连接
据我所知,普通的使用空间应用程序(Java或不是Java)无法关闭或半关闭另一个应用程序的套接字。当然不在UNIX / Linux系统上。同上特权用户空间应用程序。
因此,通过注入原始数据包,您可以使用tcpkill
等工具。如果您的Java应用程序具有特权,可以使用本机库(例如jpcap)在Java中执行相同类型的操作来执行“脏工作”....但是,使用Process.exec(....)
来运行tcpkill
或同等版本会更简单。
Iptables配置也可能有用,当通过一些短暂超时它开始拒绝客户端数据包时:
--reject-with tcp-reset
我不会这样做。您可能会冒险使系统或虚拟机出现导致问题的iptables配置,或者更糟。