|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||||||
Сервер не принимает клиента21.10.2017, 19:03. Показов 2129. Ответов 16
Метки нет (Все метки)
Здравствуйте. Дико извиняюсь, если создал темку не там или похожий вопрос уже обсуждался. Прошу ткнуть носом на подобный вопрос, я почитаю. В гугле ничего не нашел, может совсем кривой.
Проблема такова. Вот код сервера.
0
|
||||||
| 21.10.2017, 19:03 | |
|
Ответы с готовыми решениями:
16
Сервер принимает запрос от клиента только 1 раз (windows) TCP сервер принимает укороченные пакеты Пересылка бинарного файла с клиента на сервер |
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 21.10.2017, 20:33 | |
|
julok, как вариант - вы закрываете сервер-сокет что делать совсем не нужно при том что разрешения на повторное использование при открытии сокета не задается а система сама не скоро его отпустит
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||
| 21.10.2017, 21:10 [ТС] | ||
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 23.10.2017, 06:31 | |
|
julok, https://msdn.microsoft.com/en-... s.85).aspx но в вашем случае хватает просто нормального использования сервер сокета - не закрывайте его - когда вы так делаете вы как будто перезагружаете сервер ради каждого подключения. Флаг переиспользования потребуется вам если приложение сервер быстро физически рестартует на том же порту
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||
| 23.10.2017, 17:31 [ТС] | ||
И в догонку вопрос, можно ли как-нибудь организовать соединение без сервера (как, например, точка-точка)? Нахожу только общую информацию, а относительно кода ничего нет.
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 23.10.2017, 18:12 | |
|
julok, если перезагружаете очень быстро то переиспользование пригодится, точка к точке шлёт UDP пакеты - там все могут быть отправителями и слушателями но для того что бы вычислить порт на котором ждут ваших пакетов нужна третья строна
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||
| 23.10.2017, 22:10 [ТС] | ||
Вот тут и проблема. Попробовал переписать через UDP, но у второй стороны были проблемы с работой. В чем же проблема, зачем нужна 3 сторона? Почему нельзя принудительно указать? Чет вопросов больше, чем ответов.
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 24.10.2017, 09:12 | |
|
julok, ещё раз по буквам:
1 если вы собираетесь принимать входящие подключения то не закрывайте сервер-сокет (sConnection) - вы сами не видите что код который закрывает сокет а потом сразу его же открывает выглядит странно? 2 когда я закрывал своё приложение-сервер а потом запускал его заново (спустя достаточно короткое время) система не успевала "отпустить" порт и отказывалась открывать сокет на том же порту - в этом случае мне помогало использование SO_REUSEADDR - с ним мой сервер мог нормально рестартовать на том же порту. 3 про общение p2p - если оба компьютера имеют выделенные постоянные внешние IP адреса то вы можете спокойно строить коммуникации между ними как вам заблагорассудится - хоть TCP хоть UDP хоть с координирующим сервером хоть без него. Если же у них нет таких адресов и нет возможности организовать VPN что бы компьютеры думали что они в обычной локальной сети где адреса как правило "хорошие", а хочется передавать данные от компьютера к компьютеру без транзитного узла с "хорошим" адресом то приходится идти на хитрость до которой думаю вам ещё очень далеко и которая имеет свои особенности https://en.m.wikipedia.org/wik... networking)
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||
| 24.10.2017, 16:36 [ТС] | ||
2. К сожалению, я с подобным не сталкивался, поэтому знать о таком не мог, а про подобные штуки нигде не упоминается. Но если углубиться, то мне не понятно где использовать SO_REUSEADDR. В статье примера для кривых дурачков нет. 3. Дальше своего компьютера я пока не выхожу, поэтому стоит начать с 127.0.0.1. Даже так я не могу отослать данные, не делая одно из приложений серверным (сейчас говорю про UDP). Поэтому, надеюсь, вы сошлете меня на код с реализацией, ибо ничего работающего найти не могу.
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
||||||
| 25.10.2017, 06:37 | ||||||
|
julok,
2 вот так
0
|
||||||
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
|||||||
| 25.10.2017, 20:35 [ТС] | |||||||
А вот с UDP проблемы. Видимо опять где-то накосячил, ничего не приходит.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||
| 26.10.2017, 18:29 [ТС] | ||
0
|
||
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
|||||||
| 28.10.2017, 11:02 [ТС] | |||||||
|
Добавлено через 17 часов 26 минут Проблему решил, но добавило новых вопросов. На "приемнике" нужно добавить bind, т.е
0
|
|||||||
|
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
|
||||
| 30.10.2017, 16:22 | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 9
|
||
| 02.11.2017, 22:12 [ТС] | ||
|
Вот тут опять не понятно. Как я понимаю, то все сообщения, которые пришли на порт, сохраняются в очереди. Если послать сообщение, но не зайти в программу, дальнейшие попытки получить это сообщения обламываются. Если дойти до выбора оправки/приема (см код), и не выбирать прием, опять сообщение потеряется. Если хоть раз пройтись по приему, то все сообщения будут нормально приходить.
0
|
||
| 02.11.2017, 22:12 | |
|
Помогаю со студенческими работами здесь
17
Передать данные от клиента на сервер и наоборот Сервер принимает пакеты если клиент указывает неверный порт получателя UDP.
Как из TCP пакета пришедшего на сервер выделить IP клиента Сервер не принимает сообщение от клиента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|