https://algorithm.joho.info/programming/python/socket-tcp-ip-chat-1-on-1/
上記のサイトにサーバとクライアントを実行し、チャットを行うというプログラムがあるのですが、そのサーバ側のプログラムの12行目でクライアントからのデータが来るまでずっと待っています。
このプログラムをクライアントからのデータが来るのをずっと待たずにループを回し続けて処理を実行し、クライアントからデータが送られてきたらその時に受け取るといった処理に変更することは可能ですか?
下のプログラムをそのように変更した場合、 print("Client>",data)がループで実行され、コマンド上にdataを表示し続けながらクライアントからデータが来たタイミングでdataの値を変更するというイメージです。
python
1# -*- coding: utf-8 -*- 2import socket 3 4def main(): 5 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6 s.bind(("localhost", 50007)) # 指定したホスト(IP)とポートをソケットに設定 7 s.listen(1) # 1つの接続要求を待つ 8 soc, addr = s.accept() # 要求が来るまでブロック 9 print("Conneted by"+str(addr)) #サーバ側の合図 10 11 while (1): 12 data = input("Server>") # 入力待機(サーバー側) 13 soc.send(data) # ソケットにデータを送信 14 data = soc.recv(1024) # データを受信(1024バイトまで) 15 print("Client>",data) # サーバー側の書き込みを表示 16 if data == "q": # qが押されたら終了 17 soc.close() 18 break 19 20if __name__ == '__main__': 21 main()
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。