我正在製作客戶端服務器程序,並且客戶端部分存在問題。 問題在於無限的接收數據。我已經在python解釋器中測試了下面列出的這個特定的類。我已經succesfuly(也許不是)連接到谷歌,但後來程序功能recvData()數據= self.socket.recv採空(1024)不能從套接字接收數據
class client():
def __init__(self, host, port):
self.host = host
self.port = port
self.socket = self.connect()
self.command = commands()
def connect(self):
'''
Connect to a remote host.
'''
try:
import socket
return socket.create_connection((self.host, self.port))
except socket.error:
print(":: Failed to connect to a remote port : ")
def sendCommand(self, comm):
'''
Send command to remote host
Returns server output
'''
comman = comm.encode()
# for case in switch(comman):
# if case(self.command.RETRV_FILES_LIST.encode()):
# self.socket.send(b'1')
# return self.recvData()
# if case():
# print(":: Got wrong command")
if (comman == b'1'):
self.socket.send(b'1')
return self.recvData()
def recvData(self):
'''
Receives all the data
'''
i = 0
total_data = []
while(True):
data = self.socket.recv(1024)
if not data: break
total_data.append(data)
i += 1
if i > 9:
break
return total_data
有關評論部分: 我在案例的實現思想的問題,所以只使用if語句。但事實並非如此。
你調用'recvData '並且它永遠掛起? – tdelaney
你能否添加一些有關運行代碼的結果的信息(你是否得到一個異常?默默地結束?掛起?),以及你期望的結果是什麼? – glibdud
是的,它是阻止接收數據 – Fireship