我正在制作客户端服务器程序,并且客户端部分存在问题。 问题在于无限的接收数据。我已经在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