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

コメント