2つのソケットを使用したTCP通信のプログラムを作成しようとしています。
クライアント側で送りたいメッセージを2つ入力して送り、サーバー側で受け取り、連結されて表示させることを行なっています。
実行することができたのですが、これは2つのソケットを使用して送れていると考えていいのでしょうか?
現在は2つのソケットを使用し、逐次処理でメッセージを送っていますが、目標はスレッドを使用し、同時に2つのメッセージを送るプログラムを作成したいと考えています。どのように変更していけばいいのでしょうか?
よろしくお願いいたします。
###実行結果
client
Python
1Input sentence1:Mac 2Input sentence2:Book 3start Sending 4Done Sending
server
Python
1server is ready to receive 2connected 3Done Receiving 4Received:Mac 5Received:Book 6Received Message:MacBook
該当のソースコード
client
Python
1from socket import* 2 3IP = "****" 4PORT = 9000 5Address = (IP,PORT) 6#ソケットの作成 7clientSocket1 = socket(AF_INET,SOCK_STREAM) 8clientSocket2 = socket(AF_INET,SOCK_STREAM) 9 10#サーバーとの接続 11clientSocket1.connect(Address) 12clientSocket2.connect(Address) 13#データの入力 14sentence1 = input('Input sentence1:') 15sentence2 = input('Input sentence2:') 16print ("start Sending") 17#送信 18clientSocket1.send(sentence1.encode()) 19clientSocket2.send(sentence2.encode()) 20print ("Done Sending") 21 22#ソケットを閉じる 23clientSocket1.close() 24clientSocket2.close() 25
server
breakで無理やりループを抜けてます。
Python
1from socket import* 2 3PORT = 9000 4#ソケットの作成 5serverSocket = socket(AF_INET,SOCK_STREAM) 6#アドレスの設定 7serverSocket.bind(("****",PORT)) 8 9 10#接続の待ち受け 11serverSocket.listen(1) 12 13#メッセージ表示 14print ('server is ready to receive') 15 16while True: 17 #ソケットの修得 18 connectionSocket1, addr = serverSocket.accept() 19 connectionSocket2, addr = serverSocket.accept() 20 print('connected') 21 sentence1 = connectionSocket1.recv(4096).decode() 22 sentence2 = connectionSocket2.recv(4096).decode() 23 connectionSocket1.close() 24 connectionSocket2.close() 25 break 26 27print ("Done Receiving") 28print("Received:%s"%sentence1) 29print("Received:%s"%sentence2) 30sentence1 += sentence2 31print("Received Message:%s"%sentence1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/17 14:56
2019/11/17 17:04 編集
2019/11/18 08:15