Пример веб-сервера и порядок байтов - PullRequest
0 голосов
/ 21 декабря 2018

Я создал очень типовой веб-сервер с неблокирующими сокетами в качестве программы командной строки для Mac.

Основным языком программирования, который я использую, является C ++, но в некоторых случаях также C.

Я также использую библиотеку OpenSSL, чтобы клиенты могли использовать «https» в веб-браузере.

Веб-сервер работает, и клиенты могут получить к нему доступ через веб-браузер, и они увидят «Hello world».

Переносимость очень важна для меня, и мои вопросы:

  • Есть ли здесь какие-либо проблемы с порядком байтов (потому что я использую свою программу только в качестве веб-сервера), которые я больше всего предотвращаю в первую очередь?

  • Нужно ли использовать htonl () при отправке и ntohl (), когда я читаю?

  • Как я понимаю, изображениявсегда отправляется в двоичном виде (есть ли другие файлы, которые следует отправлять в двоичном виде?), но index.html и т. д. отправляются в виде строк.Так что я должен использовать htonl () только на изображениях?

Спасибо, что уделили мне время, я надеюсь, что кто-то может объяснить мне вышеуказанные вопросы так же просто, как мне интересно понятькак все должно быть сделано правильно.

1 Ответ

0 голосов
/ 21 декабря 2018

Вам нужно беспокоиться о порядке байтов, когда у вас есть двоичный протокол.Например, если вы отправляете целое число как 32-битное значение, вам нужно беспокоиться о порядке следования байтов.

Поскольку HTTP является текстовым протоколом, вам не нужно беспокоиться о порядке байтов при отправке или получении данных.,В случае передачи двоичных файлов, таких как изображения, файлы представляют собой последовательность байтов, поэтому вы отправляете и получаете их как есть.Если формат файла имеет какой-либо порядок байтов, то есть для программ, которые обрабатывают содержимое файла, о которых нужно беспокоиться, а не для программ, которые просто отправляют или получают.

...