この単純なサーバースクリプトがあります。このスクリプトの目的は次のとおりです。
- クライアント接続を待つ
- クライアントが切断されるまで、クライアントからメッセージを受信します
- クライアントが切断したら、別のクライアントが接続するのを待ちます
- クライアントが切断されるまでメッセージを受け取る
- 繰り返す...
import socket
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.bind(("",5000))
server_socket.listen(5)
print "Awaiting Client connection"
client_socket, address =server_socket.accept()
print "Connection established.. with ",address
while True:
data=client_socket.recv(512)
if not data:
client_socket.close()
print "Client disconnected, Awaiting new connections..."
client_socket, address =server_socket.accept()
print "Connection from ",address
else:
print "RECIEVED:",data
私の質問は、スクリプトが 2 台の PC でテストしたときに動作しているように見えても、クライアントからの接続を受信した後に気づいたことです。 line no 7
print "Connection established.. with ",address
クライアントがメッセージを送信するまで、Python シェル ウィンドウが応答しないようです (シェル ウィンドウを移動しようとすると応答しなくなります)。
私が理解している限り、クライアントからの着信メッセージがない場合はclient_socket.recv(512)
、クライアントからのデータを待つだけです。
しかし、なぜそれは無反応になったのですか?わかりやすくするために、
-スクリプトは問題なく動作します(データを受信して画面から出力し、クライアントが切断された場合は新しい接続を待ちます)
-コンソール ウィンドウのカーソルの点滅が止まる
- コンソール ウィンドウを移動しようとすると、応答しなくなり、「このプログラムは応答を停止しました」というメッセージが表示されます。