Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294

Указать номер порта клиента

16.10.2015, 00:49. Показов 3028. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли уточнить порт клиента при его создании?

P.S. А где список тем, похожих на введенную в заголовке?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2015, 00:49
Ответы с готовыми решениями:

Можно ли самому задать номер порта клиента?
Здравствуйте, товарищи! У меня возник такой вопрос: пишу программу на С++ для связи по сети, и мне необходимо жесток задать адрес...

Как установить номер исходящего UDP-порта
Здравствуйте! Проблема следующая. Есть несколько передатчиков, посылающих одному приемнику по UDP на определенный IP и порт данные. У...

Нужно ли в клиенте указывать ip-адрес сервера или достаточно указать номер порта
Доброго времени суток! :) Пытаюсь разобрать серверную программку, которая ждёт от клиента текстовое сообщение. Нужно ли в клиенте...

13
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
16.10.2015, 12:04
Смотря что ты понимаешь под словом "клиент".

Если "программа" - то одна и та же программа может быть клиентом для разных серверов. И порты могут быть разными.

Если "сокет" - то уточнить порт не "возможно", а необходимо.
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
16.10.2015, 15:05  [ТС]
Nelkor, прошу прощения, но где именно уточняется порт клиента? При его же создании? Да вот если взять хотя бы простой клиент:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    ...
    if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR)
    {
        printf("socket() failed with error code : %d", WSAGetLastError());
        getchar();
        exit(EXIT_FAILURE);
    }
 
    //setup address structure
    memset(&si_other, 0, sizeof(si_other));
    si_other.sin_family = AF_INET;
    si_other.sin_port = htons(PORT);
    si_other.sin_addr.S_un.S_addr = inet_addr(SERVER);
    ...
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
16.10.2015, 15:33
Цитата Сообщение от tnk500 Посмотреть сообщение
si_other.sin_port = htons(PORT);
это номер порта клиента, на него будут идти данные от сервера

Добавлено через 48 секунд
да кстати, дальше идет как раз вызов bind, если его не сделать, то система сама назначит како то порт)
1
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
16.10.2015, 15:47
Если хочешь указать порт 1234, пишешь так:
Цитата Сообщение от tnk500 Посмотреть сообщение
si_other.sin_port = htons(1234);
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
16.10.2015, 16:29
Номер порта для клиента выбирается системой автоматически
при установке соединения. Можно перед вызовом connect
сделать bind, указав желаемый порт.
1
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
16.10.2015, 16:33  [ТС]
aLarman, то есть сервер будет видеть номер порта, в точности указанный в sin_port? Потому что я прописываю, допустим, 8888 порт там, а сервер видит 53421 порт в принятой дейтаграмме.

А bind можно использовать и для клиента?

Добавлено через 1 минуту
Убежденный, во, то, что нужно. Благодарю.
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
16.10.2015, 18:06
Если укажешь порт равный 0, то система выдаст случайный свободный порт, естественно после выполнения Bind.
Если требуемый тобой порт будет занят, то Bind выдаст -1, иначе выдаст 0.
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
19.10.2015, 10:41
Цитата Сообщение от tnk500 Посмотреть сообщение
А bind можно использовать и для клиента?
да, если желаете что бы клиент занимал определенный порт)
Цитата Сообщение от noname664 Посмотреть сообщение
Если укажешь порт равный 0, то система выдаст случайный свободный порт, естественно после выполнения Bind.
тогда уж можно bind и не делать, его все равно система выдаст
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
19.10.2015, 13:19
Ой, я забыл сказать, что имел в виду UDP, а не TCP, про TCP я ничего не знаю, он мне не нравится ).
0
 Аватар для _Лёша_
388 / 377 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
01.11.2015, 09:08
noname664, Возненавидь UDP, этот протокол не гарантирует 100% передачи данных.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
01.11.2015, 12:07
Зато в UDP нет handshake, reassembly, retransmission и некотороых
других характерных для TCP вещей, а следовательно, и связанных с
ними накладных расходов.

Кстати, TCP тоже не гарантирует "100% передачи данных".
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
02.11.2015, 10:14
Убежденный, + алг. Нейгла, кажется, так же не успользуется в UDP)
0
Задачи выполнил, ушёл
27 / 30 / 7
Регистрация: 16.10.2015
Сообщений: 345
03.11.2015, 17:41
Лёша, да я обожаю UDP, я на этом протоколе сделал свой протокол.

UDP просто устроен и поэтому на его основе можно построить свой протокол, какой захочешь. Для гарантии пакетов мне всего-то нужно сделать повторный запрос через таймаут, для других проверок я используют нумерацию пакетов, контрольные суммы и др.
Это отличный протокол для создания своего протокола. Главное его преимущество - это мультиплексивность, возможность отправлять (и принимать) многим адресатам пакет без установки соединения.
А TCP устарел, имеет уязвимость из-за тройного квитирования и не поддерживает мультиплексивность, а также вся его защита держится на CRC32, а я могу сделать защиту на базе SHA-3 (Keccak) используя протокол UDP. Вообщем много преимуществ.

А возненавидел я наоборот TCP из-за того, что многие голосовые программы используют его вместо того, чтобы сделать нормальную реализацию на базе только UDP, тем более это не так сложно.
Хорошо что хоть игры используют UDP, причём даже для передачи файлов, я проверял (например Unreal Tournament 2004).

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

Кстати, гугл хочет внедрить свой протокол QUIC на базе UDP как раз для замены TCP сессий для сайтов в браузере, его поддержка уже есть в Chrome ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.11.2015, 17:41
Помогаю со студенческими работами здесь

Получение порта и IP клиента, пославшего запрос
Всем доброе время суток. Столкнулся с такой проблемкой.. Задача стоит примерно так: есть VDS с виндой и белым адресом на борту, а т акже...

Как указать номер элемента в матрице и номер итерации в Python?
Привет!! Помогите, пожалуйста, не знаю как реализовать в питоне. Рассматриваю алгоритм Тёрнбулла, так вот при реализации возникла...

UdpClient. Смена порта при отключении клиента
Странное поведение клиента. private static IPEndPoint m_endpoint = new IPEndPoint(IPAddress.Any, 2310); private...

UDP клиент-сервер. Проброс порта у клиента
В TCP-IP т.к устанавливается соединение мы используем для связи с сервером тот же сокет с которым подключались. Возможна как отправка...

Настройка ovpn клиента если на сервере mikrotik настроен редирект порта 1194 на 6666
Привет all! На сервере Микротик настроен маскарадинг и стоит редирект порта с 6666 на 1194. Виниловые клиенты цепляются нормально, а...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru