Я делаю клиент-серверную программу, и есть проблема с клиентской частью. Проблема заключается в бесконечном получении данных. Я тестировал этот класс, указанный ниже, в интерпретаторе python. Я succesfuly (возможно не) подключен к Google, но тогда программа купируются в функции 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
о комментировал часть: Я думал, проблема в реализации Case , поэтому используется только оператор if-then. Но это не так.
Вы вызываете 'recvData 'и он вешает навсегда? – tdelaney
Не могли бы вы добавить немного больше информации об исходе запуска кода (вы получаете исключение?), и что вы ожидаете от результата? – glibdud
Да, это так, блоки при получении данных – Fireship