0
我試圖在提示從鍵盤輸入中輸入文本後發送數據。該代碼似乎工作,但沒有出現提示。有人可以建議爲什麼嗎?通過套接字發送和接收數據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」,然後按下發件人中的回車鍵,然後重新運行接收腳本並顯示「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中,這種行爲已經發生了變化,這正是我所使用的。