[英]Create simple TCP Proxy with Python sockets
我正在尝试构建一个简单的 TCP 代理来侦听两台机器之间的通信(机器可以是 PC 或服务器)。 据我了解,代理在机器 A 和机器 B 上侦听请求,并在两台机器尝试相互访问时拦截来自两台机器的数据包,代理读取数据包并将它们转发到各自的目的地(机器 A 或 B )。
我有两种实现代理的方法(我不确定哪种方法是正确的)
实现示例1: proxy.py
sa = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # -> Machine A
print(ip_machine_a)
sa.connect((ip_machine_a, proxy_port))
sb = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # -> Machine B
print(ip_machine_b)
sb.connect((ip_machine_b, proxy_port))
实现示例2: proxy.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind('localhost', 4000)
s.listen(1)
connection, addr = s.accept() # Accept any connection (blocking) -> connection is Machine A
sb = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sb.connect((ip_machine_b, port_b)) # -> Machine B
这是实现侦听数据包的简单 TCP 代理的正确方法。 在两台机器之间? 在我看来,我怀疑它是实现 2,因为在我目前的情况下,我无法从连接到代理的不同机器上编写脚本,因为我无法访问机器(A 和 B)。
我正在尝试构建一个简单的 TCP 代理来侦听两台机器之间的通信(机器可以是 PC 或服务器)。 据我了解,代理在机器 A 和机器 B 上侦听请求,并在两台机器尝试相互访问时拦截来自两台机器的数据包,代理读取数据包并将它们转发到各自的目的地(机器 A 或 B )。
我有两种实现代理的方法(我不确定哪种方法是正确的)
实现示例1: proxy.py
sa = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # -> Machine A
print(ip_machine_a)
sa.connect((ip_machine_a, proxy_port))
sb = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # -> Machine B
print(ip_machine_b)
sb.connect((ip_machine_b, proxy_port))
实现示例2: proxy.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind('localhost', 4000)
s.listen(1)
connection, addr = s.accept() # Accept any connection (blocking) -> connection is Machine A
sb = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sb.connect((ip_machine_b, port_b)) # -> Machine B
这是实现侦听数据包的简单 TCP 代理的正确方法。 在两台机器之间? 在我看来,我怀疑它是实现 2,因为在我目前的情况下,我无法从连接到代理的不同机器上编写脚本,因为我无法访问机器(A 和 B)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.