sswwssww
@sswwssww

Как отправить через сокет аудиофайл?

Есть следующий работающий код:
def main():
    print(MY_LOCAL_IP)
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server_socket.bind((MY_LOCAL_IP, 5000))
    server_socket.listen()

    while True:
        client_socket, client_addr = server_socket.accept()
        request = client_socket.recv(1024)
        response_for_client = response(request)
        client_socket.sendall(response_for_client.encode('windows-1251'))
        client_socket.close()

При подключении к сокету этого "сервака", я успешно могу с ним работать, получать от него ответы и тп.
Допустим хочу чтобы при подключении к серверу через браузер, сразу начиналось скачивание mp3 файла, который отправляет сервер.

Я пробовал:
with open('1.mp3', 'rb') as audio:
    client_socket.sendall(audio.read())

но получаю ответ:
"Сайт <...> отправил недействительный ответ.
ERR_INVALID_HTTP_RESPONSE"
Как я понимаю нужно правильно передавать заголовки и тп чтобы браузер понял какие данные ему передает сервак. Но никак не пойму как это правильно сделать.
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
sswwssww
@sswwssww Автор вопроса
with open('123.mp3', 'r', encoding='ansi') as audio:
            content = audio.read()

client_socket.sendall(f'HTTP/1.1\r\nContent-Type: audio/mpeg\r\nContent-Disposition: '
                              f'attachment; filename="123.MP3"\r\nTransfer-Encoding: chunked; charset=ansi\r\n\r\n{content}'.encode('ansi'))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы