这是我的代码,它收集来自客户端的消息:
def RecieveFromClient(clientSocket, address):
print "Connection from " + str(clientSocket)
msg = None
while True:
msg = clientSocket.recv(1024)
print msg
if msg == 'c':
break
clientSocket.close()
print "client gone"
现在当我telnet到正在收听客户端的服务器并按下一个字符时,它会立即打印出服务器端的字符。我想要的是从用户那里收到一行或完整的句子。有可能吗?
答案 0 :(得分:0)
recv()就会返回。 recv(size)只有在有大小数据的情况下才会返回。
您必须使邮件的长度成为协议的明确部分。这是最好的方法:为每条消息添加一个长度,作为固定大小的整数(使用socket.ntohs()或socket.ntohl()转换为网络字节顺序!)或作为字符串后跟一些分隔符(如' 123:')。