Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 3

Серверная часть сетевого приложения на C++

27.07.2009, 03:59. Показов 3231. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Решил создать небольшое сетевое приложение, и возник вопрос следующего содержания.


C++
1
2
3
localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(54321);

стандартное заполнение структуры sockaddr_in после этого запускается функция bind() ну а потом listen() для уже созданного сокета. Клиентская часть может присоединиться по сети, а вот через интернет не подключается к серверу. Сервер запускался на компьютере который принадлежит сети с одним внешним IP. Может соединеня не получается из-за того что рутер не перенаправляет запросы приложению. Если это так, то как можно решить эту проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.07.2009, 03:59
Ответы с готовыми решениями:

Серверная часть приложения
Доброго времени суток. У меня такой вопрос: где можно почитать про серверную часть приложения? Понимаю, что должен быть некий сервер,...

Серверная часть приложения
Приветст. Пшу мобильное приложение которое работает с сервером. В серверной части и возникла проблема, так как не разу не занимался...

Серверная часть на node.js angular приложения
главная программа <!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="UTF-8"> <title>СПИСОК ДЕЛ</title> ...

9
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.07.2009, 08:47
Может firewall на сервере блокирует доступ к порту 54321 ?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
27.07.2009, 09:04
Цитата Сообщение от zooloo Посмотреть сообщение
Клиентская часть может присоединиться по сети, а вот через интернет не подключается к серверу. Сервер запускался на компьютере который принадлежит сети с одним внешним IP. Может соединеня не получается из-за того что рутер не перенаправляет запросы приложению. Если это так, то как можно решить эту проблему?
Можно на роутере сделать перенаправление определенного порта (по которому ждет соединения сервер) на нужный локальный IP.
Другой вариант, построить VPN между компом на котором запущен сервер и клиентом, тоже прокатит.
Если у вас нет доступа к роутеру или роутер не умеет перенаправлять пакеты, тогда наверное только VPN может быть выходом.

Добавлено через 4 минуты 20 секунд
Да и порт 54321 зарезервирован как временный, для сервера лучше использовать порты хотя бы от 1024 до 46000 примерно.
1
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 3
27.07.2009, 19:25  [ТС]
2vitaly1981
Порт на самом деле в данном случае не играет роли потому что не этот порт используется =).
Можно на роутере сделать перенаправление определенного порта (по которому ждет соединения сервер) на нужный локальный IP.
Возможно ли такое программно реализовать на сервере?
Заранее спасибо.

Добавлено через 3 минуты 6 секунд
VPN конечно решает проблему, но хотелось бы без него справиться. Может существуют API для роутеров?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
27.07.2009, 20:20
Цитата Сообщение от zooloo Посмотреть сообщение
Возможно ли такое программно реализовать на сервере?
Заранее спасибо.

Добавлено через 3 минуты 6 секунд
VPN конечно решает проблему, но хотелось бы без него справиться. Может существуют API для роутеров?
Программно перенастроить роутер? Насколько знаю такие возможности предоставляют только дорогие роутеры, кроме того у каждого типа роутера свое встроеное ПО.... Кроме этого нужно знать адрес роутера, данные для аутентификации. Не понимаю зачем это возлагать на программу-сервер, это будет скорее трудоемко и неуниверсально.
Обычно каждый кто использует программу должен соответствующим образом настроить сеть. Лучший вариант это предоставить настройку администратору роутера, ведь всего лишь нужно прописать форвардинг одного порта, и то как внешний клиент будет попадать на сервер, это личное дело администратора сети, ведь сеть можно построить поразному.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.07.2009, 20:42
Сервер запускался на компьютере который принадлежит сети с одним внешним IP.
Не понял - какая структура сети ?
Если сервер ваш находится за NAT-ом в приватной сети, то разумеется клиент из Internet не достучится до вашего сервера.
0
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 3
28.07.2009, 01:28  [ТС]
структура сети вот такая
комп1 комп2 комп3
\ | /
р о у т е р
| | |
И н т е р н е т
Ещё вопрос.
Если я у себя на компе(который находится в сети описаной выше) ставлю серверную часть, настраиваю порт маппинг на роутере, то по идее клиентские части программы из интернета будут иметь доступ.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
28.07.2009, 06:49
Цитата Сообщение от zooloo Посмотреть сообщение
структура сети вот такая
комп1 комп2 комп3
\ | /
р о у т е р
| | |
И н т е р н е т
Ещё вопрос.
Если я у себя на компе(который находится в сети описаной выше) ставлю серверную часть, настраиваю порт маппинг на роутере, то по идее клиентские части программы из интернета будут иметь доступ.
Вообщем всегда делали так:
С стороны сервера, настраиваешь порт прослушки, например 2001. На роутере ставишь forward 2001 порта на 2001 порт на ip, например, 192.168.0.2 (внутрисетевой адрес сервера).
На клиенте нужно просто что бы был выход в инет, ну и естественно разрешения на исходящие соединения по этому порту (например в некоторых организациях некоторые порты исходящие закрывают), ничего больше.

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

Если соединения не будет проверь снифером (мне нравится Packetyzer) приходят ли вообще пакеты.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
28.07.2009, 09:22
по идее клиентские части программы из интернета будут иметь доступ
Вообще говоря это зависит от протокола который ты используешь между клиентов и сервером, но если специально ничего не портить, то будут.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
28.07.2009, 09:52
Цитата Сообщение от odip Посмотреть сообщение
Вообще говоря это зависит от протокола который ты используешь между клиентов и сервером, но если специально ничего не портить, то будут.
Судя по использованию bind() и listen() это TCP )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.07.2009, 09:52
Помогаю со студенческими работами здесь

Серверная часть многопользовательского приложения: правильная организация
Есть идея многопользоветельского шутера но нет опыта в данном вопросе... Что почитать? Интересует информация о серверной части, на сколько...

Серверная часть для Android приложения. Куда смотреть
Всем привет. Мне для Android-приложения необходимо разработать серверную часть. Если с написанием Android приложения вопросов особо не...

Серверная часть http
Необходимо реализовать серверную часть для общения с клиентскими браузерами по http. Что для этого лучше использовать cgi, fastcgi или...

Python и серверная часть
Буду программировать серверную часть приложений. Python для этого подойдет? Или оптимальнее для такого c++ или java? Скорее всего придется...

Не запускается серверная часть
boost::asio::ip::tcp::endpoint server_endpoint(boost::asio::ip::tcp::v4(),9999); boost::asio::io_service server_io_service; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru