如何在Python中编程转发TCP连接?

0 投票
1 回答
1598 浏览
提问于 2025-04-18 13:47

我想要通过编程的方式,把本地机器上进来的TCP连接转发到其他机器,并且可以根据需要改变转发的目标。

举个例子,我想把进来的连接从端口 9001 转发到 www.google.com:80,然后过一段时间,我想关闭本地的9001端口,改为把进来的连接从 9400 转发到 www.yahoo.com:80,或者说同时让这两个转发规则都能工作。

我最开始以为可以用iptables来实现这个功能,但我不太确定。我也看过TCP套接字代理,但我并不关心连接的内容,只想要能够通过编程来重定向和关闭这些连接。

1 个回答

0

你可以使用 sockets 这个库来建立一个连接,连接到你想要交流的TCP端口。然后,你可以不断地从这个连接中读取数据,直到你获取到足够的数据,或者读取的时间达到你想要的时间,就像下面这样:

conn_in  = socket.create_connection((from_host, from_port))
conn_out = socket.create_connection((to_host, to_port)) 
...
while time() - start_time < desired_time:
    buffer = conn_in.recv(4096)
    conn_out.send(buffer)

你还可以根据需要在这个过程中添加一些条件判断。这样做对你有帮助吗?

撰写回答