将两个插座连接在一起而无需编写字节操作管道代码?

时间:2014-05-18 17:04:18

标签: python sockets

在Python中,是否可以将两个套接字连接在一起而无需编写字节操作的管道代码?

例如,我想编写一个与用户交互的程序(请求/响应格式),然后执行与另一个主机的TCP连接,然后将其交给STDIN / STDOUT套接字。 / p>

然后,在STDIN上收到的任何数据都将通过TCP套接字发送,从TCP套接字接收的任何数据都将立即同时发送到STDOUT,而不会阻止它们。

建议的方法是什么?我希望尽可能避免编写大量套接字代码并让它“正常工作”。

1 个答案:

答案 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))