do.pyで
servport = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servport.bind( (socket.gethostname(), 0) )
wrapper = 'doing.py'
pid = os.fork()
if not pid:
argv = [sys.executable, wrapper, '%s:%d' % servport.getsockname()]
os.execv(argv[0], argv)
try:
print "do.py: someone connect to me"
servport.listen(1)
(send_sock, got_addr) = servport.accept()
print "do.py: connected from %s" % str(got_addr)
やっている.py
print "doing.py: got %s" % str(sys.argv)
(host, port) = sys.argv[1].split(':')
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect( (host,port) )
'%s:%d' % socket.getsockname()
127.0.1.1:36802 が表示されることがわかりました
しかし、私のパブリック IP アドレスは 98 で始まるものです。.* 私のボックス (ubuntu) で ifconfig を実行すると、192.168 の wlan0 があります。.
IP アドレスと 127 にはさまざまなクラスがあることを読んで理解しました。.* は、基本的に、パケットが同じマシンで実行されている別のアプリに向けられていることを示しています。
'%s:%d' % socket.getsockname()
98 を出すようにコーディングするにはどうすればよいですか。.*?
servport.bind( ('0.0.0.0', 0) )
提案から、do.pyでに変更した場合
私は
do.py を取得します: 誰かが私に接続します
doing.py: 得 ['doing.py', 0.0.0.0:41107'
]
これは、パケットが実際にネットワークの外に送信されて戻ってきたということですか? <-----