在Python中,是否可以将两个套接字连接在一起而无需编写字节操作的管道代码?
例如,我想编写一个与用户交互的程序(请求/响应格式),然后执行与另一个主机的TCP连接,然后将其交给STDIN / STDOUT套接字。 / p>
然后,在STDIN上收到的任何数据都将通过TCP套接字发送,从TCP套接字接收的任何数据都将立即同时发送到STDOUT,而不会阻止它们。
建议的方法是什么?我希望尽可能避免编写大量套接字代码并让它“正常工作”。
答案 0 :(得分:0)
"""
open another terminal and run
nc -l 8080
type something in the both terminals>
"""
import sys
from socket import socket, AF_INET, SOCK_STREAM
from select import select
host = 'localhost'
port = 8080
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((host, port))
reader = sock.makefile('r', 0)
writer = sock.makefile('w', 0)
while True:
ins, _, _ = select([reader, sys.stdin],[],[])
for i in ins:
if i == reader:
sys.stdout.write(i.read(1))
if i == sys.stdin:
writer.write(sys.stdin.read(1))