我想通过管道将 TCP 套接字连接到 Unix 套接字我可以像这样使用 socat 来做到这一点
socat TCP-LISTEN:1234 UNIX-CONNECT:test.socket
但是这里的问题是,我不想自己指定端口号我希望操作系统为我选择一个空闲端口,但我仍然可以知道端口。
我写了这个脚本,它不起作用,但可以说明我想要做什么
def bind(unix_sock_file):
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.bind(('', 0))
tcp_socket.listen(1)
cmd = 'socat - UNIX-CONNECT:%s' % unix_sock_file
Popen(cmd, shell=True, stdin=tcp_socket, stdout=tcp_socket, close_fds=True)
return tcp_socket.getsockname()
我得到的错误是:
2012/09/11 15:34:39 socat[26509] E read(0, 0x1e97a90, 8192):传输端点未连接
注意#1:我也接受除 socat 之外的任何其他解决方案
注意#2:此脚本应该通过管道连接一个监听 Unix Socket 的 Web 服务器,以及一个连接到生成的 TCP 端口的 Web 浏览器。
提前致谢