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

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

01.01.2013, 22:01. Показов 6143. Ответов 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
06.01.2013, 20:16  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от mss Посмотреть сообщение
Зачем ты на клиентской стороне используешь TIdUDPServer ?
а как еще принимать данные?

Цитата Сообщение от mss Посмотреть сообщение
Тебе там TIdUDPClient'а мало ?
у меня всего один исходник по данной теме, в нем сделано так...
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 20:20
Цитата Сообщение от Iriskin Посмотреть сообщение
а как еще принимать данные?
Обыкновенно же - IdUDPClient.Binding.Recv

Цитата Сообщение от Iriskin Посмотреть сообщение
один исходник по данной теме, в нем сделано так
Мало ли кто какие глупости может сморозить)
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
06.01.2013, 20:24  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
IdUDPClient.Binding.Recv
а куда это писать в коде?

Добавлено через 23 секунды
поставить таймер?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 20:28
ну как куда ?
сразу за сендом:

send; // отправил запрос партнеру
recv; // тут же ждешь и получаешь от него ответ, иначе зачем было запрос посылать ?
1
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
06.01.2013, 21:03  [ТС]
спасибо огромное!

данные дошли, но не те(
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 21:08
Цитата Сообщение от Iriskin Посмотреть сообщение
данные дошли, но не те
Во-о-от)
А ты не верил что ошибка именно у тебя в программе - все пенял на интернеты да маршрутизаторы)
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
06.01.2013, 22:02  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
все пенял на интернеты да маршрутизаторы)
я просто думал, что не разбираюсь в интернетах и маршрутизаторах, рассчитывал на программы.
А теперь понял что и в них я не разбираюсь)

Добавлено через 51 минуту
похоже что все-таки данные не доходят((

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
var s : char;
begin
IdUDPClient1.Send('88.86.217.81',21580,'client');
log.Lines.Add('Отправлен запрос : client');
 
IdUDPClient1.Binding.Recv(S,SizeOf(S),-1)  
log.Lines.Add('Получен ответ : ' + s);
end;
пишет непонятно что, а самое главное, принимает данные даже при выключенном сервере
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 22:09
Цитата Сообщение от Iriskin Посмотреть сообщение
IdUDPClient1.Binding.Recv(S,SizeOf(S),-1)
Что такое "S" ?
Что это еще за -1 третьим параметром ?
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
06.01.2013, 22:14  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var SD : TSendDate;
    s : char;
begin
log.Lines.Add('Данные получены');
 
s:='K';
 
//SD.s:='OK';
 
ABinding.Send(S,SizeOf(S),0);
 
log.Lines.Add('Oтвет не отправлен');
 
end;
Добавлено через 1 минуту
Цитата Сообщение от mss Посмотреть сообщение
-1 третьим параметром
AFlags : integer

Добавлено через 30 секунд
если вместо -1 поставить 0, то клиент виснет
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 22:22
Цитата Сообщение от Iriskin Посмотреть сообщение
s : char;
Это на стороне сервера.
А на стороне клиента что такое "S" ?

Цитата Сообщение от Iriskin Посмотреть сообщение
если вместо -1 поставить 0, то клиент виснет
Он и должен "виснуть" в ожидании получения данных от партнера.

Так почему именно -1 ? От балды что ли ?
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
06.01.2013, 22:28  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
А на стороне клиента что такое "S" ?
тоже char

Цитата Сообщение от mss Посмотреть сообщение
Так почему именно -1 ? От балды что ли ?
видимо да(

Цитата Сообщение от mss Посмотреть сообщение
Он и должен "виснуть" в ожидании получения данных от партнера.
значит ответ не доходит(
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 22:38
Цитата Сообщение от Iriskin Посмотреть сообщение
значит ответ не доходит
Значит idudpclient.binding.Port на стороне клиента не равен ABinding.PeerPort на стороне сервера.
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
06.01.2013, 22:57  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Значит idudpclient.binding.Port на стороне клиента не равен ABinding.PeerPort на стороне сервера.
да, порт клиента равен 0

Добавлено через 2 минуты
и IP пустой

Добавлено через 2 минуты
а как клиент узнает чему они равны на сервере?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
06.01.2013, 23:29
А Connect ты на стороне клиента вызывал перед первым Send ?

Добавлено через 23 минуты
На стороне клиента перед самым первым вызовом Send[To] или Recv[From] следует установить любой свободный фиксированный номер локального порта обращением к IdUDPClient.Binding.Port (Indy9) или IdUDPClient.BoundPort (Indy10)

Это обязательное условие для udp hole punching
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 18:47  [ТС]
не получается вызвать connect

программа перестает работать из-за этой строчки:
IdUDPClient1.Binding.Connect(2);
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 19:21
IdUDPClient1.Binding.Port := ...;
IdUDPClient1.Active := true;
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 19:29  [ТС]
код клиента:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var s : char;
 
begin
s:='s';
IdUDPClient1.Binding.Port:=21580;
IdUDPClient1.Active := True;
 
IdUDPClient1.Binding.Connect(2);
 
IdUDPClient1.Binding.SendTo('88.86.217.81',21580,s,1);
 
end;
Добавлено через 2 минуты
выдает ошибку: '' is not a valid integer value
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 19:41
Я же написал тебе в #56 что нужно сделать.
0
7 / 7 / 2
Регистрация: 18.10.2012
Сообщений: 95
07.01.2013, 19:53  [ТС]
я так и сделал

Добавлено через 2 минуты
в #57 я написал уже измененную версию
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.01.2013, 20:01
Какую такую "измененную" ?
Сказано же :

1. Установить IdUDPClient1.Binding.Port
2. Установить Active = True

После этого безо всяких Connect начать передачу и прием.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2013, 20:01
Помогаю со студенческими работами здесь

Передача данных, клиент-сервер по интернету
Здравствуйте, простой чат на основе 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 получить элемент о, а на сервере скрипт...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru