【问题标题】:Using A Third Party Application To Send Data To An Already Open TCP Connection?使用第三方应用程序向已经打开的 TCP 连接发送数据?
【发布时间】:2012-08-06 05:53:51
【问题描述】:

我正在运行一个使用 TCP 套接字与服务器通信的客户端程序。当我启动客户端时,它会立即创建与服务器的套接字连接,并且不会关闭连接。

我想知道的是,我可以创建另一个应用程序(独立于客户端/服务器应用程序)在这个已经打开的套接字上发送数据吗?

我知道一个似乎可以做到这一点的程序。该程序旨在嗅探客户端和服务器之间的数据包,并允许您在连接上发送数据。 在发送数据之前,您必须向程序提供客户端进程名称(例如,client.exe)。我相信它正在做的是使用客户端进程作为服务器的一种代理(这不是我想要做的,我希望能够直接连接到服务器)。

【问题讨论】:

    标签: sockets tcp client


    【解决方案1】:

    是的,您可以,在特定情况下 - 前提是您的第二个应用程序与客户端在同一主机上运行,​​并且是 Unix 操作系统。

    您需要做的是让您的客户端应用程序和第二个应用程序在它们之间打开一个 Unix 域套接字,然后让客户端应用程序将它为套接字获得的打开文件描述符的副本传递给第二个应用程序。

    查看这个 SO 问题的详细信息:Portable way to pass file descriptor between different processes

    【讨论】:

    • 非常感谢您的回答!!有一个问题使我无法执行您的建议。客户端应用程序已经编码,它不是我的,我无权访问源等。因此我无法控制客户端应用程序是否创建域套接字,也不能让它将副本传递给我自己的应用程序。 :(
    • 我谈到的这个其他程序要求您选择进程(例如client.exe)才能使其工作。这个程序会不会“窥探”客户端以找到套接字连接然后劫持它?
    • 您可以使用 LD_PRELOAD 在客户端应用程序中劫持套接字系统调用。详情见stackoverflow.com/questions/273220/help-with-using-ld-preload
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多