如何连接两个套接字而不编写字节处理的管道代码?
在Python中,有没有办法把两个套接字连接在一起,而不需要写那些复杂的字节处理代码呢?
举个例子,我想写一个程序,可以和用户进行互动(请求/响应的格式),然后再建立一个TCP连接到另一个主机,最后把这个连接直接交给标准输入和标准输出的套接字。
这样的话,任何从标准输入收到的数据都会通过TCP套接字发送出去,而从TCP套接字收到的数据又会发送到标准输出——这一切都是同时进行的,毫不耽搁。
那么,推荐的做法是什么呢?我希望能避免写一堆套接字的代码,最好是让它“自动运行”。
1 个回答
4
编辑:我之前的帖子没有回答提问者想要的内容。进行了大幅修改。
"""
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))