Порты с C++ серверными/клиентскими приложениями

Если я создаю серверное/клиентское приложение С++, порт, который я использовал для связи, должен быть открыт на маршрутизаторе сервера и клиентской машины.

Или какой другой подход я мог бы выбрать? клиентский компьютер должен получать информацию с сервера, но я не могу открыть какие-либо порты, потому что он находится в школьной сети....

[редактировать]

Хм, моя установка - это php-страница, работающая на сервере, скажем, когда я нажимаю приветствие, сервер устанавливает ssh-соединение через php и отправляет команды оболочки на машину. Сервер работает со школьного сервера, к которому у меня есть доступ по ssh, и оттуда я запускаю все свои вещи. Клиентским компьютером будет мой компьютер, работающий от школьного Wi-Fi, который не подключен к серверу. Сервер попытается установить ssh-соединение с общедоступным IP-адресом моего компьютера, работающего от школьного Wi-Fi (порты не открываются / могут выходить по ssh, но не по ssh). Сделают ли это возможным упомянутые вами методы, в частности, connect.c, поскольку я не могу запустить шпатлевку с сервера, и connect.c, который я мог бы вызвать из файла php.


person user541597    schedule 04.04.2011    source источник
comment
вопрос с измененным тегом; подумайте о переходе на superuser.stackexchange.com   -  person sehe    schedule 05.04.2011
comment
Вы должны предоставить дополнительную информацию. Является ли ваш транспортный протокол TCP или UDP? он находится в школьной сети: какой компьютер находится в сети, где вы не можете открыть ни один порт? Клиент? Сервер? Оба? Ожидаете ли вы подключения из Интернета или только внутри школьной сети?   -  person thkala    schedule 05.04.2011


Ответы (2)


Выбор языка здесь совершенно не важен.

Не обязательно, чтобы порты были «открыты» на любом маршрутизаторе, если только ваш трафик не должен проходить через него. На обычных одноранговых узлах в той же сети (или подсети) вряд ли будет какая-либо политика брандмауэра, даже в школах.

Технически коммутатор может блокировать одноранговый трафик (имеется в виду трафик, не предназначенный для исходящего шлюза), но это не очень обычно.

Конечно, если школа не разрешает исходящий (WAN) трафик на большинстве портов, не повезло, и они абсолютно правы :)

Вы можете посмотреть на

Все очень охотно гуглится

person sehe    schedule 04.04.2011
comment
О, не забывайте очевидное: используйте открытые порты. Кстати, если вы находитесь за прокси-сервером или межсетевым экраном с NAT, вам придется полагаться только на исходящее соединение, если вы не можете настроить переадресацию портов на маршрутизаторе. - person sehe; 05.04.2011
comment
Я добавил больше к вопросу, посмотрите. - person user541597; 05.04.2011

Чтобы установить соединение TCP/IP, клиенту должен быть доступен только порт сервера. Соединение является полнодуплексным, поэтому данные могут передаваться от клиента к серверу и наоборот.

Если вы используете UDP для своего приложения, который является протоколом без установления соединения, происходящее в значительной степени зависит от брандмауэра или маршрутизатора и от того, выполняет ли он отслеживание соединения для вашей службы или нет.

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

person thkala    schedule 04.04.2011
comment
Сервер представляет собой выделенный школьный сервер, который ученики используют для html, php и тому подобного. Сервер, к которому у меня есть доступ через ssh. Клиент будет подключен к школьному Wi-Fi, к которому у меня нет доступа по ssh. Сервер будет выполнять большую часть работы. Таким образом, сервер должен иметь доступ к клиенту по ssh. Моя идея, возможно, заключалась в том, чтобы создать скрипт на клиенте, который постоянно ssh подключается к серверу и проверяет, были ли переданы какие-либо команды, если сервер получил, скажем, нажатие кнопки приветствия, это будет команда, запрос вернет любую команду клиенту и запустить его. - person user541597; 05.04.2011