【发布时间】:2016-09-17 00:33:31
【问题描述】:
在提示从键盘输入中输入文本后,我正在尝试发送数据。该代码似乎可以工作,但没有出现提示。任何人都可以提出原因吗?
要发送的代码是:
#!/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 中发生了变化,这就是我正在使用的。
【问题讨论】:
标签: sockets python-3.x