Visual C, WinSock HTTP Req и не Windows

0

У меня просто вопрос. Я студент, и я учусь. Я не очень разбираюсь в C++, но я, наконец, создал рабочее приложение http reqest в C++ с помощью winsock, и я просто хотел знать, что после компиляции http-запрос по-прежнему будет отправляться из других ОС, которые не имеют WinSock?

  • 0
    Что вы имеете в виду? Вы имеете в виду, если ПК с Linux отправляет HTTP-запрос вашему приложению, чтобы оно все еще работало?
Теги:
visual-c++
http
winsock

2 ответа

1
Лучший ответ

WinSock или, по крайней мере, те части, которые вы, вероятно, использовали для вводного сетевого материала, основывается на API сокетов BSD и в значительной степени совместим с ним, который доступен для всех текущих операционных систем. Если у вас нет опыта в кросс-платформенной разработке, вряд ли ваш код будет скомпилирован в первый раз через систему Linux, но основные методы будут одинаковыми.

Для кросс-платформенных сетей вы можете рассмотреть что-то вроде Qt, которое предоставляет API, который будет работать в основном на всех операционных системах без особых вещей для каждой платформы. Его сетевой интерфейс также основан на сокетах Berkeley.

В общем, тем не менее, нет никакого способа проверить, что ваш код работает кросс-платформенным, без проверки его кросс-платформенной. Возьмите дистрибутив Linux и попробуйте его; обратите внимание, что некоторые из них специально предназначены для работы с вашим диском Windows без необходимости перераспределения.

0

Если вы используете стандартизованные функции сокетов на основе BSD, ваш код, как правило, будет работать на нескольких платформах socket(), bind(), connect(), send(), recv() и т.д. Предостережения включают:

  1. коды ошибок. Когда в Windows происходит сбой функции WinSock/BSD, код ошибки WSAGetLastError() с использованием WSAGetLastError(), тогда как другие платформы вместо этого используют errno. Таким образом, вам придется обернуть эту часть, если вы пытаетесь написать кросс-платформенный код.

  2. get/setsockopt() может реализовывать различные варианты на разных платформах, а не все опции стандартизированы на всех платформах.

Если вы используете специальные функции WinSock, ваш код будет работать только в Windows. WSASocket(), WSAConnect/Ex(), WSASend/Ex(), WSARecv/Ex() и т.д.

Все версии Windows имеют WinSock. Большинство платформ, включая Windows, поддерживают API-интерфейс сокетов на базе BSD.

После компиляции кода он будет работать только на конкретной платформе, для которой он был скомпилирован. Вам придется составлять код отдельно для каждой платформы, которую вы хотите поддерживать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню