前提・実現したいこと
pythonでp2p式のチャットアプリを作ろうとしています。
異なるpc間でsocketのTCP通信でメッセージをやり取りしたいです。
わからない点は、サーバー側のipアドレスを何にするかです。これまで、以下のコードのmy_ipのところを"localhost"にしており、同じパソコンからだと問題なく通信できていました。
別のパソコン同士で通信するときはmy_ipをglobal ipアドレスに設定するのでしょうか?
http://ipcheck.ieserver.net/にアクセスしてglobal ip アドレスを取得し、サーバーを立ち上げるプログラムを書いたところ、以下のエラーに遭遇しました(client.py実行前)
発生している問題・エラーメッセージ
Traceback (most recent call last):
File "server.py", line 8, in <module>
s.bind((my_ip, 50007))
OSError: [WinError 10049] 要求したアドレスのコンテキストが 無効です。
該当のソースコード
server.py
python
1import socket, requests 2s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 3res = requests.get('http://ipcheck.ieserver.net/') 4my_ip = str(res.text.rstrip("\n")) 5s.bind((my_ip, 50007)) 6s.listen(1) 7c, a = s.accept() 8msg = c.recv(1024) 9print(msg.decode()) #client.pyを実行するとfooが表示されてほしい
client.py
python
1import socket, requests 2s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 3res = requests.get('http://ipcheck.ieserver.net/') 4my_ip = str(res.text.rstrip("\n")) 5s.connect((my_ip, 50007)) 6s.send("foo".encode())
試したこと
Windowsのファイアウォールで50007ポートのTCP通信を許可しました
補足情報(FW/ツールのバージョンなど)
環境:Windows10 Anaconda
ウイルス対策ソフトは入っていません(Windows Defenderのみ)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/02 13:42