前提・実現したいこと
Pythonを用いて2台のパソコン間でTCP/IP通信を行いたい
(追加の質問:1台のパソコンで行ったとき、netstatで出てきたローカルアドレスがサーバ側なのか、クライアント側なのか知りたい)
発生している問題・エラーメッセージ
以下の用にサーバのIPアドレスを打っても通信できません。
接続先サーバ:サーバのIPアドレスを打ちました 接続できません プロセスは終了コード 0 で完了しました
同じパソコン内で行うと通信できます
接続先サーバ:localhost メッセージを入力:Hello サーバからのメッセージ: 2020-11-22 17:19:18.560995 プロセスは終了コード 0 で完了しました
該当のソースコード1(server側)
Python
1# モジュールのインポート 2import socket 3import datetime 4 5 6# グローバル変数 7PORT = 50002 # ポート番号 8BUFSIZE = 4096 # 受信バッファの大きさ 9 10# メイン実行部 11# ソケットの作成 12server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 13# アドレスの設定 14server.bind(("",PORT)) 15# 接続の待ち受け 16server.listen() 17 18# クライアントへの対応処理 19while True: # 対応の繰り返し 20 client, addr = server.accept() # 通信用ソケットの取得 21 msg = str(datetime.datetime.now()) # メッセージの作成 22 print(msg,"接続要求あり") 23 print(client) 24 data = client.recv(BUFSIZE) # クライアントより受信 25 print(data.decode("UTF-8")) # 受信内容の出力 26 client.sendall(msg.encode("utf-8")) # メッセージの送信 27 client.close() # コネクションのクローズ
該当のソースコード2(client側)
Python
1# モジュールのインポート 2import socket 3import sys 4 5# グローバル変数 6PORT = 50002 # ポート番号 7BUFSIZE = 4096 # 受信バッファの大きさ 8 9# メイン実行部 10# ソケットの作成 11client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 12# サーバとの接続 13host = input("接続先サーバ:") 14try: 15 client.connect((host, PORT)) 16except: 17 print("接続できません") 18 sys.exit() 19# サーバへのメッセージの送信 20msg = input("メッセージを入力:") 21client.sendall(msg.encode("utf-8")) 22# サーバからのメッセージの受信 23data = client.recv(BUFSIZE) 24print("サーバからのメッセージ:") 25print(data.decode("UTF-8")) 26# コネクションのクローズ 27client.close()
試したこと
初めに同じパソコン内で試してみようと思い、クライアントのhostに"localhost"と入れて実行したところ通信できたが、その値を2台目のパソコンのIPアドレスにしたところできなかった。
補足情報(FW/ツールのバージョンなど)
Python 3.6
Anaconda3
PyCharm
Windows 10
回答2件
あなたの回答
tips
プレビュー