如何在Python中编程转发TCP连接?
我想要通过编程的方式,把本地机器上进来的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)
你还可以根据需要在这个过程中添加一些条件判断。这样做对你有帮助吗?