Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.10.2013, 20:43
nano_bot nano_bot вне форума
Новичок
 
Регистрация: 05.05.2013
Сообщения: 62
Версия Delphi: Delphi 7
Репутация: 10
Вопрос Передача данных по сети без использования сервера (peer to peer)

Здравия всем! С сетями работать начал года пол назад. И все время я писал клиент-серверные программы, они грозили утечкой трафика и потерей времени на прием передачу. Но без сервака с внешним ip коннектиться клиенты не могли, т.е. если хотябы у одного из них не внешний ip (статический или динамический в принципе не оч. важно, ибо это решаемая проблема), соединение pear to pear не установить, вылезет ошибка 10060 или 10061! Собственно назрел вопрос - как реализовать прямую передачу данных клиент-клиент без использования сервера с внешним ip? Skype под windows написан на делфях, и передача звука, видео, файлов идет напрямую клиенту! Как они это реализовали?

Последний раз редактировалось nano_bot, 06.10.2013 в 07:41.
Ответить с цитированием
  #2  
Старый 02.10.2013, 09:16
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от nano_bot
писал клиент-серверные программы, они грозили утечкой трафика и потерей времени на прием передачу
например? трехзвенкой не решить?
Цитата:
Сообщение от nano_bot
. Skype под windows написан на делфях, и передача звука, видео, файлов идет напрямую клиенту! Как они это реализовали?
Хотите сказать у скайпа нет сервера? не может быть такого
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #3  
Старый 02.10.2013, 20:13
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
pear to pear
Груша-к-груше? Называется оно peer-to-peer.
Цитата:
Хотите сказать у скайпа нет сервера? не может быть такого
Может отчасти. Сервер может использоваться для поиска узлов, но передача данных идти напрямую. Не знаю, как скайп, но есть ведь такие вещи, как Hamachi - данные точно передаются напрямую. Даже если с обеих сторон по роутеру. Как - не знаю. Давно хотел узнать, но ничего не находил по теме.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Freeman (02.10.2013)
  #4  
Старый 02.10.2013, 20:43
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

[offtop]
а что, неплохая идея, сделать грушевые сети
[/offtop]
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 06.10.2013, 07:41
nano_bot nano_bot вне форума
Новичок
 
Регистрация: 05.05.2013
Сообщения: 62
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Вывод какой? Можно ли средствами делфи реализовать клиент-клиент соединение?

p.s. грушу исправил!
Ответить с цитированием
  #6  
Старый 06.10.2013, 13:24
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Можно.
Есть UDP, есть UPnP, в конце концов - можно сделать TCP-сервером один из клиентов. Вариантов много, дерзайте.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #7  
Старый 08.10.2013, 10:27
nano_bot nano_bot вне форума
Новичок
 
Регистрация: 05.05.2013
Сообщения: 62
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от PhoeniX
Можно.
Есть UDP, есть UPnP, в конце концов - можно сделать TCP-сервером один из клиентов. Вариантов много, дерзайте.
Да не выйдет, мне кажется. Я сижу с wifi, т.е. по факту нахожусь в локалке, которая имеет доступ в интернет, значит ip именно моей машинки можно узнать только подключившись к локалке, а мой внешний ip, с которым я гуляю в интернете - это ip сервера в локалке, который раздает wifi. Ну ок. Вот рядом со мной другой комп со статическим внешним IP, т.е. все как надо.
Проверка idUDPclient/server
Тест №1. Запустил серверное приложение на ПК с внешним статическим ip, приконнектился с ноута, подключенного к wifi - все ок, сообщения приходят, связь есть.
Тест №2. Запустил серверное приложение на ноуте, подключенном к wifi, приконнектился с ПК - связи нет, ничего не приходит!
Исходник сервера(свойство bindings выбирал all, все ip'ы):
Код:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
begin
memo1.Lines.LoadFromStream(adata);
end;

Исходник клиента:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
idudpclient1.Send(edit1.text);
end;
Ответить с цитированием
  #8  
Старый 08.10.2013, 11:05
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

пробрось требуемые порты на роутере
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #9  
Старый 08.10.2013, 13:56
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от nano_bot
Тест №2... - связи нет, ничего не приходит!
Почему-то я не удивлён
Я не зря сказал про UPnP.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #10  
Старый 08.10.2013, 20:06
nano_bot nano_bot вне форума
Новичок
 
Регистрация: 05.05.2013
Сообщения: 62
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
пробрось требуемые порты на роутере
Пробросить порты? Тоесть проверить не заняты ли они? Всё проверял, все ок!

Цитата:
Сообщение от PhoeniX
Почему-то я не удивлён
Я не зря сказал про UPnP.
А где компонент для д7 можно скачать и как с ним работать?

Последний раз редактировалось M.A.D.M.A.N., 08.10.2013 в 20:20.
Ответить с цитированием
  #11  
Старый 08.10.2013, 23:20
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

как ты хочешь достучаться из внешней сети до своего компа, который находится за натом роутера?
только пробросом нужного порта за nat, чтобы при обращении к твоему белому IP порт автоматом переводился на твой комп во внутренней сети
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #12  
Старый 09.10.2013, 00:05
nano_bot nano_bot вне форума
Новичок
 
Регистрация: 05.05.2013
Сообщения: 62
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
как ты хочешь достучаться из внешней сети до своего компа, который находится за натом роутера?
только пробросом нужного порта за nat, чтобы при обращении к твоему белому IP порт автоматом переводился на твой комп во внутренней сети
Средствами делфи это никак не сделать? Причем без запуска приложения на самом сервере. Да конечно никак. Вот это я и хотел узнать! Всем спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter