Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связь между двумя компьютерами с динамическими IP, Как сделать на Indy? 
:(
    Опции темы
Чупакабро
Дата 7.7.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: нет
Всего: 4



Есть UDP клиент и сервер (совмещены в одной программе). 
В локальной сети (или в ее эмуляции с помощью программ вроде Hamachi) все замечательно работает, данные передаются.
Когда пытаюсь установить связь между компьютерами через интернет, соответственно ничего не работает. Айпишники динамические.
Что делать, как быть?
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
xkor
Дата 9.7.2011, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 8.1.2007
Где: Питер

Репутация: 1
Всего: 4



Цитата(Чупакабро @  7.7.2011,  18:50 Найти цитируемый пост)
ничего не работает

хотите чтобы вам помогли - выражайтесь конкретнее, тут не телепаты сидят...
программа учитывает возможные потери UDP пакетов?
размеры у этих пакетов не слишком большие? чем больше размер тем на больше число кусков он будет разбит из за MTU (которое в инете может быть крайне мелким) и тем выше вероятность что пакет не дойдет.

Это сообщение отредактировал(а) xkor - 9.7.2011, 01:11
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kami
Дата 9.7.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(xkor @  9.7.2011,  01:06 Найти цитируемый пост)
программа учитывает возможные потери UDP пакетов?размеры у этих пакетов не слишком большие? чем больше размер тем на больше число кусков он будет разбит из за MTU (которое в инете может быть крайне мелким) и тем выше вероятность что пакет не дойдет.

Рано еще говорить о протоколе обмена. Кроме того, некоторые отправляемые данные могут не нуждаться в гарантированном приеме.
Чтобы он (пакет) хоть куда-то ушел, нужно знать адрес корреспондента. (броадкасты отбросим сразу).
В случае динамических IP это (мягко говоря) проблематично. Кроме того, не исключена возможность того, что оба компьютера сидят за NAT, что еще больше усложняет процесс обмена.

Цитата(Чупакабро @  7.7.2011,  18:50 Найти цитируемый пост)
Что делать, как быть?

В общем случае задача связи динамических IP по UDP не имеет решения.

Добавлено через 2 минуты и 4 секунды
Цитата(Чупакабро @  7.7.2011,  18:50 Найти цитируемый пост)
В локальной сети (или в ее эмуляции с помощью программ вроде Hamachi) все замечательно работает

Hamachi работает через собственный сервер, имеющий статический IP. 
Итого общая схема работы hamachi получается компьютер <=>сервер<=>компьютер.
PM MAIL WWW   Вверх
Чупакабро
Дата 9.7.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: нет
Всего: 4



я немного уточню
динамические айпишники известны на момент подключения
дело не в том, что я не знаю, куда коннектиться, а в том, что нет этого коннекта
размеры пакетов делал разными от 128 до 2048 байт
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
kami
Дата 9.7.2011, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(Чупакабро @  9.7.2011,  15:31 Найти цитируемый пост)
динамические айпишники известны на момент подключения

адрес одного из компьютеров в студию.

Цитата(Чупакабро @  9.7.2011,  15:31 Найти цитируемый пост)
нет этого коннекта

при работе по UDP говорить о "коннекте" несколько некорректно, ибо его на самом деле нет (в отличие от TCP)
PM MAIL WWW   Вверх
Чупакабро
Дата 10.7.2011, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: нет
Всего: 4



Цитата(kami @  9.7.2011,  17:01 Найти цитируемый пост)
адрес одного из компьютеров в студию

91.215.79.94 

Код сервера:
Код

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
begin
 idUDPServer1.ReceiveBuffer(buf,bufsize);
 pb1:=@buf[0];
 pb2:=@s[0];
 move(pb1^,pb2^,buf[0]+1);
 label1.Caption:=s;
end;

Код клиента:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 s:=edit1.Text;
 zeromemory(@buf[0],bufsize);
 pb1:=@buf[0];
 pb2:=@s[0];
 move(pb2^,pb1^,length(s)+1);
 idUDPClient1.SendBuffer(labelededit1.Text,idudpclient1.Port,buf,bufsize);
end;

--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
xkor
Дата 10.7.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 8.1.2007
Где: Питер

Репутация: 1
Всего: 4



Цитата(Чупакабро @  9.7.2011,  15:31 Найти цитируемый пост)
динамические айпишники известны на момент подключения
а IP эти выдаются компам на которых программа или компы за натом?
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Чупакабро
Дата 10.7.2011, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: нет
Всего: 4



компы за роутером, как минимум) ну и доступ в инет через локалку наверное подразумевает NAT
а айпишники я по ламерски смотрю через Яндекс "мой ip" (91.215.79.94 ), 
то есть на самих компах-то другие ip, типа 192.168.1.103 - они выдаются роутером

Это сообщение отредактировал(а) Чупакабро - 10.7.2011, 15:30
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
kami
Дата 10.7.2011, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(Чупакабро @  10.7.2011,  15:23 Найти цитируемый пост)
а айпишники я по ламерски смотрю через Яндекс, 

Это не по-ламерски. Это правильно. Внутренние IP здесь не помогут.
Вот только доступ через NAT связан с большими трудностями. Единственное, что я нашел в интернете - оба компьютера для установления обмена должны сперва "подолбиться" корреспонденту. Тогда временно установится разрешение на прохождение пакетов из внешнего мира в локалку. Потому что изначально пакет уходит от клиента, проходит через NAT спокойно, доходит до места, где должна пройти переадресация "внешний IP"=>"внутренний IP", и там зависает, потому что у маршрутизатора есть разрешение выпускать изнутри, а вот про переадресацию снаружи внутрь он не знает.
PM MAIL WWW   Вверх
Чупакабро
Дата 10.7.2011, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: нет
Всего: 4



то есть маршрутизатор будет думать, что он получает пакеты в ответ на выпущенные и станет переадресовывать входящие вовнутрь?
если так, то забавно) сервер должен заранее знать всех клиентов
p.s. Спасибо за помощь!

Это сообщение отредактировал(а) Чупакабро - 10.7.2011, 16:17
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
kami
Дата 10.7.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(Чупакабро @  10.7.2011,  15:46 Найти цитируемый пост)
Спасибо за помощь!

Это не помощь, а предположение smile
PM MAIL WWW   Вверх
Akella
Дата 22.7.2011, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Чупакабро, почитай http://forum.vingrad.ru/topic-48020/125.html
некоторым помогает
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.