キーボード入力によるテキストの入力を求められた後にデータを送信しようとしています。コードは機能しているようですが、プロンプトは表示されません。誰かがなぜ示唆できますか?ソケットを介してデータを送受信するpython3
コードを送信するためには、次のとおりです。受信する
#!/usr/bin/python3
import socket
class LogSocket:
def __init__(self, socket):
self.socket = socket
def send(self, data):
print("Sending {0} to {1}".format(data, self.socket.getpeername()[0]))
self.socket.send(data)
def close(self):
self.socket.close()
def respond(client):
response = input("Enter a value: ")
client.send(bytes(response, 'utf8'))
client.close()
if __name__ == "__main__":
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost',2401))
server.listen(1)
try:
while True:
client, addr = server.accept()
respond(LogSocket(client))
finally:
server.close()
コード:
#!/usr/bin/python3
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 2401))
print("Received: {0}".format(client.recv(1024)))
client.close()
行動は少し奇妙です。送信端末に「Hello World」と入力して入力すると、受信端末に切り替えて受信スクリプトを実行すると、出力はありません。 "Hello World"と入力して送信者にenterキーを押すと、受信スクリプトを再実行し、 "Hello World"が表示されますが、入力のプロンプトが表示されます。
差出人出力:
Hello World
Enter a value: Sending b'' to 127.0.0.1
Hello World
Enter a value: Sending b'Hello World' to 127.0.0.1
レシーバ出力:
$ ./receive_data_socket1.py
Received: b''
$ ./receive_data_socket1.py
Received: b'Hello World'
のpython3にソケットを扱うの経験を持つ誰もが行動を説明してもらえますか?私は動作が3.5で変更されていることを認識しています。これは私が使用しているものです。