'b' передается при отправке строки с клиента на сервер в python при попытке реализации FTP - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь реализовать для реализации FTP, где я хочу отправить имя файла на сервер от клиента, я попробовал ниже код, когда я даю имя файла как myText.txt, но сервер получает как "b" myText.txt ""

Не могли бы вы помочь мне, как я могу избавиться от б? Это вывод на сервер:

Это код сервера:

import socket                   # Import socket module
port = 60000                    # Reserve a port for your service.
socketObj = socket.socket()     #Create a socket object
host = socket.gethostname()     # Get local machine name
socketObj.bind((host, port))    # Bind to the port
socketObj.listen(5)             # Now wait for client connectionection.
print ('Server listening....')

while True:
    connection, addr = socketObj.accept()     # Establish connectionection with client.
    print ('Got connectionection from', addr)
    data = connection.recv(1024)
    print('Server received request for FTS of',(data))

    filename=(repr(data))
    f = open(filename,'rb')
    l = f.read(1024)
    while (l):
       connection.send(l)
       print('Sent ',repr(l))
       l = f.read(1024)
    f.close()

    print('Done sending')
    connection.send(('Thank you for connectionecting').encode())
    connection.close()

Это код клиента

import socket                   # Import socket module

s = socket.socket()             # Create a socket object
host = socket.gethostname()     # Get local machine name
port = 60000                    # Reserve a port for your service.

s.connect((host, port))
fileNeeded = input("What File do you need, please enter the name:")
s.send(fileNeeded.encode())

fileToBeSaved = input("Enter file name to save requested file")

with open(fileToBeSaved, 'wb') as f:
    print ('file opened')
    while True:
        print('receiving data...')
        data = s.recv(1024)
        print((data))
        if not data:
            break
        # write data to a file
        f.write(data)

f.close()
print('Successfully got the file')
s.close()
print('connection closed')

На сервере получено следующее: Сервер получил запрос на FTS от b'mytext.txt '

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете использовать метод bytes.decode() для преобразования байтов в строку:

Изменить:

filename=(repr(data))

в:

filename=repr(data).decode()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...