2016-05-05 13 views
0

socketを使用して2つのメッセージを別々に送信したいとします。これまでの私のコードは以下の通りです。ソケットを使用して2つのメッセージを別々に送信

サーバー側:

from socket import * 

s = socket(AF_INET, SOCK_STREAM) 
s.bind(('localhost', 8888)) 
s.listen(1) 
conn, addr = s.accept() 
msg1 = conn.recv(128).decode() 
print('msg1', msg1) 
msg2 = conn.recv(128).decode() 
print('msg2', msg2) 

クライアントエンド:

from socket import * 

sock = socket(AF_INET, SOCK_STREAM) 
sock.connect(('localhost', 8888)) 
msg1 = "hello" 
sock.sendall(msg1.encode()) 
msg2 = "world" 
sock.sendall(msg2.encode()) 

ターミナルは、次のように出力されます

msg1 helloworld 
msg2 

私が期待したものとそれらをするためには、別途2つのメッセージを受信しました次のように印刷してください:

msg1 hello 
msg2 world 

私が望むものを得るためにコードを変更するにはどうすればよいですか?

答えて

3

表示する情報の量だけを読み取るか、またはb)クライアントから2番目のメッセージを送信する前にブロックする必要があります。

msg1 = conn.recv(5).decode() 
print('msg1', msg1) 
msg2 = conn.recv(5).decode() 
print('msg2', msg2) 

B

(サーバ)

msg1 = conn.recv(128).decode() 
print('msg1', msg1) 
conn.send(b'Hi') 
msg2 = conn.recv(128).decode() 
print('msg2', msg2) 

(クライアント)

msg1 = "hello" 
sock.sendall(msg1.encode()) 
sock.recv(2048) # but we don't really care what the message is 
msg2 = "world" 
sock.sendall(msg2.encode()) 
関連する問題