この記事では、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入門 サンプル集 |

コメント