|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|
Не работает передача данных по интернету01.01.2013, 22:01. Показов 6592. Ответов 87
Метки нет (Все метки)
всем доброго времени суток
написал небольшую игру с передачей данных по протоколу UDP (Indy) в локальной сети все работает нормально, а через интернет идет только в одну сторону в чем может быть проблема?
0
|
|
| 01.01.2013, 22:01 | |
|
Ответы с готовыми решениями:
87
Передача данных по интернету
Передача данных между ПК по интернету |
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|
| 04.01.2013, 22:58 [ТС] | |
|
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 04.01.2013, 23:04 | |
|
0
|
|
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|
| 04.01.2013, 23:14 [ТС] | |
|
просто понравилась)
решил использовать этот порт
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 04.01.2013, 23:23 | ||
|
Лучше бы тебе понравилось выяснить хоть что-нибудь про то как работают различные типы трансляторов сетевых адресов (NAT) в части UDP. Добавлено через 2 минуты Вот краткий ликбез на эту тему.
1
|
||
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|
| 05.01.2013, 17:44 [ТС] | |
|
спасибо, почитаю
Добавлено через 18 часов 7 минут Прочитал про NAT, совсем запутался, и снова ничего не работает клиент посылает данные на порт 21580 сервер получает данные, пришедшие с порта 59753 и посылает ответ на тот же порт клиент ничего не получает сервер посылает данные на порт 21580 клиент снова ничего не получает PS: клиент подключен к интернету через роутер
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 05.01.2013, 18:29 | |||
|
1. Этому не препятствуют правила файрволов на стороне клиентского хоста и на стороне роутера для входящих UDP-пакетов с портом назначения 59753 2. Сервер получив дейтаграмму от клиента ответил ему немедленно (к примеру, не позднее чем через 30 секунд) 3. Таблица маршрутизации на стороне роутера имеет соотв.записи. 1. см. п.п.1,3 выше 2. в правилах маршрутизации роутера так или иначе создано правило форвардинга входящих на порт 21580 UDP-пакетов со внешнего интерфейса на внутренний с адресом и портом назначения ClientHostIPAddress:ClientPort 3. Клиент ожидает входящие UDP-пакеты именно на порту ClientPort
0
|
|||
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
||
| 05.01.2013, 18:41 [ТС] | ||
|
Добавлено через 1 минуту а какой порт надо слушать в первом варианте?
0
|
||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 05.01.2013, 18:57 | |||
|
Ты утверждаешь что инициатором UDP-обмена в 1-м варианте выступает клиент, и его сообщение сервер успешно получает, после чего сервер отвечает на тот же порт, с которого он получил сообщение от клиента. Время между получением запроса и отправкой ответа не должно превышать десятков-сотен секунд (обычно от полуминуты до двух, конкретное время зависит от конкретной реализации и настроек конкретного NAT-устройства)
0
|
|||
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
||
| 05.01.2013, 19:35 [ТС] | ||
|
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); begin IdUDPClient1.Send(ABinding.PeerIP,ABindi ng.PeerPort,'OK'); ... end; Добавлено через 1 минуту но клиент (за маршрутизатором) ничего не получает
0
|
||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 05.01.2013, 19:51 | |||
|
Ну вот тебе и твоя ошибка, грубейшая причем : Зачем тебе на стороне сервера еще и IdUDPClient ? У него совершенно другой порт источника, поэтому НАТ на стороне клиента посылает это сообщение на три буквы ! Отвечай клиенту через тот же сокет, через который сервер получил входящую дейтаграмму от удаленного клиента. Этот сокет представлен серверу в Read-событии параметром ABinding. Причем не тяни резину с ответом - через максимум пару минут НАТ на стороне клиента практически наверняка пошлет ответ сервера на те же буквы.
1
|
|||
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|
| 05.01.2013, 19:53 [ТС] | |
|
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.01.2013, 20:01 | |
|
Ну хотя бы так.
И даже еще проще - ABinding.Send('ответ')
0
|
|
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
||||||
| 05.01.2013, 20:45 [ТС] | ||||||
не заметил переход на новую страницу* Добавлено через 2 минуты это тоже не сработало
0
|
||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 05.01.2013, 21:02 | |
|
Значит не судьба.
0
|
|
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|
| 05.01.2013, 22:16 [ТС] | |
|
а есть какая-нибудь более конкретная статья про NAT и Delphi?
Добавлено через 7 минут с примерами может быть...
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 06.01.2013, 00:18 | ||
|
Это уже попахивает ошибкой в использовании чего-то там под названием "AData"
0
|
||
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|||||||
| 06.01.2013, 11:15 [ТС] | |||||||
Добавлено через 1 час 18 минут и это не работает а какие еще могут быть препятствия?
0
|
|||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 06.01.2013, 14:54 | |
|
ABinding.Send(SD,SizeOf( SD));
Покажи код клиентской стороны
0
|
|
|
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
|
|||||||
| 06.01.2013, 20:07 [ТС] | |||||||
0
|
|||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 06.01.2013, 20:14 | |
|
Ну что тут сказать ?
Теми же граблями по тому же лбу) Зачем ты на клиентской стороне используешь TIdUDPServer ? Тебе там TIdUDPClient'а мало ?
0
|
|
| 06.01.2013, 20:14 | |
|
Передача данных, клиент-сервер по интернету
Почему не работает? передача данных Не работает передача данных с формы как работает передача данных на сервер? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Video:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|