Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95

Не работает передача данных по интернету

01.01.2013, 22:01. Показов 6588. Ответов 87
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем доброго времени суток
написал небольшую игру с передачей данных по протоколу UDP (Indy)
в локальной сети все работает нормально, а через интернет идет только в одну сторону

в чем может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2013, 22:01
Ответы с готовыми решениями:

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

Передача данных по интернету
Всем привет, кто знает как передавать данные по тсп через интернет? Пробовал через сокеты и TcpClient, но у меня получилось только по...

Передача данных между ПК по интернету
сабж, сколько исходников не перекопал, все на моем компе работают, а между двумя не хотят. Что я неправильно делаю? Вот например нашёл...

87
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 20:20  [ТС]
Студворк — интернет-сервис помощи студентам
клиент:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var s : char;
 
begin
s:='s';
IdUDPClient1.Binding.IP := '88.86.217.81';
IdUDPClient1.Binding.Port := 21580;
IdUDPClient1.Active := true;
 
IdUDPClient1.Binding.SendTo('88.86.217.81',21580,s,1);
 
log.Lines.Add(inttostr(IdUDPClient1.Binding.Port));
 
IdUDPClient1.Binding.Recv(s,1,0);
 
log.Lines.Add(s);
 
end;
при включенном сервере виснет (при выключенном сервере выдает не то значение, но не виснет)
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 20:30
Цитата Сообщение от Iriskin Посмотреть сообщение
при включенном сервере виснет
Убедись с помощью консольной команды netstat -a -b -p UDP, что твой клиент после Active=True действительно привязан именно к локальному порту 21580.

Если так, то настраивай файрволы-брандмауеры на клиентском хосте - они наверняка не пускают входящие на порт 21580 дейтаграммы.

Цитата Сообщение от Iriskin Посмотреть сообщение
при выключенном сервере выдает не то значение
Он вообще ничего не выдает - ты же не соизволил проанализировать результат вызова Recv, который наверняка = 0.
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 20:31  [ТС]
соизволил
-1
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 20:40
Цитата Сообщение от Iriskin Посмотреть сообщение
соизволил
-1
Так а зачем тогда ты выводишь в лог переменную s, если ни одного байта данных recv() не принял ?
-1 как раз и означает отказ в приеме данных по причине ошибки, причиной которой как раз и является неактивный сервер: SendTo ничего никуда не отправил по этой же причине, и параметры '88.86.217.81',21580 не были запомнены для неявного использования в Recv.
1
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 20:45  [ТС]
0.0.0.0:21580 *:*

Добавлено через 58 секунд
можете написать полный код клиента (на нажатие кнопки) ?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 20:51
Цитата Сообщение от Iriskin Посмотреть сообщение
0.0.0.0:21580 *:*
Значит проверяй настройки файрвола.
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:03  [ТС]
выключил брандмауер - то же самое(
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 21:06
Цитата Сообщение от Iriskin Посмотреть сообщение
выключил брандмауер - то же самое
А на роутере ? Там тоже файрвол есть.
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:18  [ТС]
там он по умолчанию выключен
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 21:32
А что возвращает ABinding.Send() на стороне сервера ?
1
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:36  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
А что возвращает ABinding.Send() на стороне сервера ?
печально, но -1

Добавлено через 2 минуты
все починил!
данные дошли
пошел тестировать в интернете
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 21:40
Цитата Сообщение от Iriskin Посмотреть сообщение
печально, но -1
И это при том что ABinding.PeerIp в точности соответствует внешнему адресу клиентского роутера, а ABinding.PeerPort равен 21580 ?
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:43  [ТС]
-1 было из-за того что я использовал send вместо sendto
а в sendto конкретно указан и ИП и порт
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 21:45
Цитата Сообщение от Iriskin Посмотреть сообщение
а в sendto конкретно указан и ИП и порт
Ну ты же все равно брал их из ABinding.PeerIp и ABinding.PeerPort ?
Я и спрашиваю - они соответствуют действительности ?
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:55  [ТС]
видимо да
данные дошли через интернет
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:56  [ТС]
вот конечный вариант
Вложения
Тип файла: rar клиент-сервер.rar (351.9 Кб, 19 просмотров)
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 21:58  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Я и спрашиваю - они соответствуют действительности ?
IP совпадает, а порт - нет
Мне кажется, это из-за маршрутизатора...
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 22:00
Цитата Сообщение от Iriskin Посмотреть сообщение
данные дошли через интернет
Аминь.

Добавлено через 1 минуту
Цитата Сообщение от Iriskin Посмотреть сообщение
а порт - нет
И не обязан.
Ты же не удосужился определить тип NAT на стороне клиента)
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 22:02  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Ты же не удосужился определить тип NAT на стороне клиента)
это верно

но именно прочитав про NAT, я понял что порты могут различаться)
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 22:07
Все это чудесно, но весь твой многодневный скорбный труд никуда не годится для случая когда и сервер окажется за NAT.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2013, 22:07

Передача данных, клиент-сервер по интернету
Здравствуйте, простой чат на основе Winsock, не работает через интернет, т.е. данные только от клиента серверу передаются без ошибок и...

Возможна ли передача данных по Wi-Fi и интернету между Java и C#?
Нужно передавать данные о файлах между Android и Windows. Сам уверен, что это возможно, но на всякий случай решил спросить.

Почему не работает? передача данных
index.html <HTML> <HEAD> <TITLE>HTML Form</TITLE> </HEAD> <BODY> <FORM ACTION='Handleform.php'> First Name...

Не работает передача данных с формы
<html><body> <form action=hello.php> Логин: <input type=text name="login" value=""><br> Пароль: <input type=password...

как работает передача данных на сервер?
как работает передача данных на сервер в той области, что я делаю функцию вставляю туда х=2 у=5 получить элемент о, а на сервере скрипт...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
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). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru