Сервер имеет один сокет сервера, который используется для accept
входящих соединений, и другой сокет для каждого из этих соединений. Из вашего кода:
self.gate.listen(10)
while True:
add = self.gate.accept()
self.reciveFileName() # which calls self.gate.recv()
Вместо того, чтобы работать с self.gate в reciveFilename
и reciveFile
(кстати, правильное написание - receive
), вы должны заставить эти методы работать на принятом соединении, как это:
def listen(self):
self.gate.listen(10)
while True:
conn,address = self.gate.accept()
self.receiveFilename(conn)
def receiveFilename(self, sock):
buf = sock.recv(1024)
print('First bytes I got: ' + buf)
Кроме того, reciveFilename
в настоящее время постоянно слушает сокет. Вместо этого вы должны разработать правильный протокол, который указывает, когда имя файла заканчивается и начинается содержимое файла. Например, вы можете позволить имени файла оканчиваться на b'\0'
и позволить серверу искать этот байт.