この記事では、Pythonで1対1のソケット通信(TCP/IP)でチャットする方法とソースコードについて紹介します。
ソケット通信(TCP/IP)でチャット
Pythonでは、socketモジュールでソケット通信を実装できます。
今回は、簡単なチャットプログラムを作ります。
【内容】
サーバー側とクライアント側を実行します。
そして、サーバー側のコンソール画面に文章を入力すればクライアント側にも表示されます。
次に、クライアント側の画面から文章を入力すればサーバ側画面に表示されます。
ソースコード
サンプルプログラムのソースコードです。
サーバー側(server.py)
# -*- coding: utf-8 -*- import socket def main(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("localhost", 50007)) # 指定したホスト(IP)とポートをソケットに設定 s.listen(1) # 1つの接続要求を待つ soc, addr = s.accept() # 要求が来るまでブロック print("Conneted by"+str(addr)) #サーバ側の合図 while (1): data = input("Server>") # 入力待機(サーバー側) soc.send(data) # ソケットにデータを送信 data = soc.recv(1024) # データを受信(1024バイトまで) print("Client>",data) # サーバー側の書き込みを表示 if data == "q": # qが押されたら終了 soc.close() break main()
【処理】
①ソケットの作成と設定をする。
②クライアントからの接続要求があるまで待機する。
③クライアントからの接続要求があれば受け付ける。
④ソケット通信でデータ「UNTAN」をクライアントに送信する。
⑤TCP接続を終了する。
⑥⑤~⑦の処理を繰り返す。
クライアント側(client.py)
# -*- coding: utf-8 -*- import socket def main(): soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) soc.connect(("localhost", 50007)) while(1): data = soc.recv(1024) print("Server>", data) # サーバー側の書き込みを表示 data = input("Client>") # 入力待機 soc.send(data) # ソケットに入力したデータを送信 if data == "q": # qが押されたら終了 soc.close() break main()
【処理】
①ソケットの作成と設定をする。
②接続するサーバーのIPアドレスを指定する。
③サーバに接続する。
④サーバからデータを受信する。
⑤受信バッファ(データ)を表示する。
– | 関連記事 |
---|---|
1 | ■Pythonでネットワークプログラミング入門 |
2 | ■Python入門 サンプル集 |
コメント