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

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

01.01.2013, 22:01. Показов 6601. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: 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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru