V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linxy19957
V2EX  ›  程序员

如何获取 tcp rst 之前的数据

  •  
  •   linxy19957 · 2019-05-09 16:14:59 +08:00 · 1567 次点击
    这是一个创建于 2025 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用以下 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 前发送的数据?

    4 条回复    2019-05-09 18:00:11 +08:00
    neoblackcap
        1
    neoblackcap  
       2019-05-09 16:33:54 +08:00
    可以是肯定可以的,不过这事怕是用 Python 不好做,我的思路是用 raw_socket 去收数据,你要啥都可以收回来
    linxy19957
        2
    linxy19957  
    OP
       2019-05-09 17:08:38 +08:00
    @neoblackcap 感谢回复,raw_socket 的话太麻烦了,tcp 还得重组
    Lax
        3
    Lax  
       2019-05-09 17:51:14 +08:00
    服务器用 rst 关闭连接是基于什么情况考虑的呢?
    linxy19957
        4
    linxy19957  
    OP
       2019-05-09 18:00:11 +08:00
    @Lax 服务器有 ip 白名单,非名单内的 ip 连接会返回错误信息然后 rst
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.