2016-02-29 19 views
1

這是我的代碼,這recvieves來自客戶端的信息:即聽取客戶的recv()方法在python,recieving一個句子,而不是性格

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" 

現在,當我遠程連接到服務器,並按下單個字符,它會立即打印出服務器端的字符。我想要的是從用戶那裏收到一行或一句完整的句子。可能嗎?

回答

0

recv()會在每次獲取新數據時返回。 012vrecv(size)只會返回一次具有大小的數據。

您將不得不將消息的長度作爲協議的顯式部分。下面是最好的方法:用一個長度爲每個消息加上前綴,或者作爲一個固定大小的整數(使用socket.ntohs()或socket.ntohl()轉換爲網絡字節順序)或者作爲一個字符串後跟一些分隔符(比如'123:')。

來源:https://stackoverflow.com/a/1716173/1802922

相關問題