TCPソケットをUnixソケットにパイプしたいので、このようにsocatを使用してこれを行うことができます
socat TCP-LISTEN:1234 UNIX-CONNECT:test.socket
しかし、ここでの問題は、ポート番号を自分で指定したくないということです。OS に空いているポートを選択してもらいたいのですが、それでもポートを知ることができます。
私はこのスクリプトを書きましたが、それは機能しませんが、私がやりたいことを示しているかもしれません
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 ブラウザーをパイプする必要があります。
前もって感謝します