作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在本地运行一个长时间运行的套接字连接。当我终止服务器应用程序时,它会干净地关闭。我现在想看看客户端在没有完全关闭时的行为。如果它们在不同的服务器上,我可以拔掉网线。当连接是本地连接时,我没有什么可拉的。 [在这里插入粗鲁的笑话。]
我可以 netstat -an |grep tcp | grep :80
并查看连接,它看起来像这样:
tcp 0 0 10.1.2.3:80 10.1.2.3:40494 ESTABLISHED
我可以使用那个 40494 端口号来终止或挂起套接字,就像我可以使用程序的 PID 来终止它一样吗?
非常相似的问题:How can I simulate a 'plugged network cable' (TCP/IP)? (那个问题问的是Windows,我是Linux)
最佳答案
卸载网络驱动程序的内核模块可能会以您想要的方式终止它。
从事件列表中选择您的网络接口(interface)(eth0、eth1 等...)
ifconfig -a
eth0 Link encap:Ethernet HWaddr 18:A9:05:68:6F:B0
inet6 addr: fe80::1aa9:5ff:fe68:6fb0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1
寻找eth0接口(interface)的驱动模块
ls -l /sys/class/net/eth0/device/driver/module
lrwxrwxrwx 1 root root 0 Aug 15 18:39 module -> ../../../../module/bnx2
列出系统运行的内核模块
lsmod | grep bnx
bnx2i 48158 0
cnic 55511 1 bnx2i
bnx2 81890 0
从内存中删除模块需要 root 或 sudo 权限
rmmod -f -w bnx2
这不是一个安全的操作,你以不安全的方式扰乱了操作系统。执行此操作时会发生坏事(tm)。不要在生产环境中这样做。此外,这可能无法正常工作,具体取决于驱动程序行为本身。
也就是说,这是一个有趣的问题,我很想知道结果如何。
关于linux - 可以模拟拔网线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17671981/
我是一名优秀的程序员,十分优秀!