如何获取 tcp rst 之前的数据

2019-05-09 16:14:59 +08:00
 linxy19957

使用以下 python 代码连接到服务器某端口
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("x.x.x.x", x))
s.send(b"x" * 14) # ok
data=s.recv(10000) # exception
服务器在发送了一定量的数据后立即使用 rst 关闭了连接,python 中调用 recv 会抛出 exception,是否有办法获取到服务器在 rst 前发送的数据?

1469 次点击
所在节点    程序员
4 条回复
neoblackcap
2019-05-09 16:33:54 +08:00
可以是肯定可以的,不过这事怕是用 Python 不好做,我的思路是用 raw_socket 去收数据,你要啥都可以收回来
linxy19957
2019-05-09 17:08:38 +08:00
@neoblackcap 感谢回复,raw_socket 的话太麻烦了,tcp 还得重组
Lax
2019-05-09 17:51:14 +08:00
服务器用 rst 关闭连接是基于什么情况考虑的呢?
linxy19957
2019-05-09 18:00:11 +08:00
@Lax 服务器有 ip 白名单,非名单内的 ip 连接会返回错误信息然后 rst

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/562566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX