| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > Peer2Peer |
| Автор: ShurikA 7.11.2006, 17:52 |
| Доброе время суток всем. Я уже кучу времени капаюсь в нете с целью понять принцип работы Peer2Peer подключения, передачи данных и т.д. То как я себе это предтавлял до того: 1. Клиент запраживае кто залогинин на сервере и всё что с каждим таким подключённым связанно (на пример IP). 2. Открывается сокетное соединение с другим клиентом пользуясь ранее полученым IP. 3. и дальше делай что хочешь обходя сам сервер. после всего того что я выкопал в нете: http://www.onjava.com/pub/a/onjava/2003/12/03/p2psockets.html http://java.sun.com/developer/technicalArticles/peer/ http://www.jxta.org и ещё много другого, Я понял что я уже ничего не понял... Во всяком случае то что там описанно, это что п[о любому вся информация проходит через сервак. |
| Автор: sergejzr 7.11.2006, 18:14 |
| Просто существуют разные архитектуры P2P. Например Napster'у нужен центральный сервер. BitTorrent обходится вообще без серваков. А в Minerva'е, существует подархитектура hypercube с точками, которые отвечают за основной трафф. У YaCy пиры делятса на "начинающих", продвинутых и Senior. В зависимости от статуса у них также больше/меньше прав. |
| Автор: ShurikA 7.11.2006, 18:30 |
| sergejzr, ууу как всё запущенно!!!!!!! Ладно, тогда спрошу так: Нужет Р2Р так что бы минимально задействовался сервак но при этом велась история действий... Добавлено @ 18:31 и как кстати назуваются эти разные архитектуры? если у них вообще есть название... |
| Автор: sergejzr 7.11.2006, 18:42 |
| Есть у некоторых.. у minervа - hypercube. Кстати она как раз самая "научная". Так сказать - ребёнок исследований, в то время, как остальные сделаны впринципе фрилансерами. А там сам пони9маешь.. кто как назовёт А пока сам с minerva буду разбираться http://www.mpi-sb.mpg.de/departments/d5/software/minerva/. Вроде весьма солидный софт. |
| Автор: ShurikA 7.11.2006, 18:48 |
| А как на счёт JXTA? |
| Автор: sergejzr 7.11.2006, 18:50 |
| Не смотрел, но думаю, если у нас около 60 человек работают с P2P и никто не посоветовал, то наверное не стоит заниматься.. |
| Автор: ShurikA 7.11.2006, 18:59 | ||
Это библиотека для Р2Р под JAVA... вот нащёл я такую вещь: http://www.webopedia.com/DidYouKnow/Internet/2005/peer_to_peer.asp где написанно так:
вот это то что мне и нужно... Куда капать? |
| Автор: sergejzr 7.11.2006, 19:08 |
| Вопрос в том, что копать? indexing server и архитектура - немного разные вещи. Чего ты от системы хочешь? |
| Автор: ShurikA 7.11.2006, 19:11 |
| Начать хочу с простого мессенжера пересылая сообщения не через сервер (это множно сделать и на базе сервлета) а на прамик от клиента к клиенту, а сервак задействовать только для хранения истории... Добавлено @ 19:21 и ещё одно в чё приемушество в пользовании Р2Р над обычным сервлетом? |
| Автор: ShurikA 7.11.2006, 19:47 |
Но это будет происходить не свазанно, и соответственно от сервака не будет зависить отправка сообщений, уже не говоря о том случе когда нужно будет переправить фаил. Ну почему же, оба способа могут связуваться в сервером. Или я чего то не понимаю? Если да то я полностью запутался. Чем отличается Р2Р от сервлета? |
| Автор: sergejzr 7.11.2006, 19:54 |
| В P2P каждый peer - клиент и сервер одновременно. Все пиры равнозначны. Никакого "сервлета" там нет. Или ты собираешься каждому юзеру чата tomcat устанавливать? |
| Автор: ShurikA 7.11.2006, 20:51 |
Так всё, окончательный тупик Есть гдето нормальная литература, типа для чайников? |
| Автор: COVD 7.11.2006, 20:56 | ||
Почитайте про Socket и ServerSocket |
| Автор: LSD 7.11.2006, 22:09 |
| Насчет BitTorrent это не совсем так. BitTorrent не может работать без сервера. Это или должен быть центральный сервер (трекер) или распределенная сеть в которой каждый узел минитрекер. Трекер не держит у себя данных, и через него данные не передаются, он только помогает клиентам установить между собой соединение и следит за переданым/скачаным трафиком (так называемый UP/DOWN ratio). На самом деле BitTorrent весьма хорошо продуманная сеть, и создавалась как средство централизованной раздачи больших файлов, как-то дистрибутивы Linux (http://torrent.fedoraproject.org/). Даже MS хотели в свое время раздавать бету Висты через торенты, когда у них от нагрузки стали падать серваки. Для BitTorrent есть неплохой Java - OpenSource клиент http://azureus.sourceforge.net/. |
| Автор: ShurikA 7.11.2006, 22:34 |
| LSD, sergejzr, Народ, вы всё вокруг да около... То что такие проги есть я не сомнивался, вопрос как их самому написать? Только не для передачи фаилов, а в качестве мессенгера (для начала во всяком случае). Добавлено @ 22:36 Для начало: 1. Что такое Р2Р? 2. где можно прочесть онлайн его азы? Добавлено @ 22:39 LSD, кстати задумка у меня была такая как в БитТорент. |
| Автор: LSD 7.11.2006, 22:46 |
| Общие принципы BitTorrent можно почитать http://www.computerra.ru/hitech/37124/ и http://ru.wikipedia.org/wiki/BitTorrent. Подробное описание протокола на http://www.bittorrent.com/. |
| Автор: ShurikA 7.11.2006, 22:51 |
| LSD, Ладно ещё раз перефомулирую себя: Если я хочу добиться обычного месенжера и я не хоцу пользоваться сервлетом, Какие ещё варианты существуют так что бы обращения на сервак были минимальными? извините за занудство, но я торможу |
| Автор: LSD 7.11.2006, 23:31 |
| Я вижу только 2 варианта: 1. Сервак держит у себя только список клиентов и их IP. По запросу клиента выдает IP интересующего его клиента. Клиенты взаимодействуют напрямую, без какого либо участия сервера. Проблему аутентификации надо решать исходя из того какой уровень безопастности требуется в системе. 2. Полностью децентрализованная система: сервак держит у себя только список некоторых клиентов, и при необходимости может обратится к ним с запросом. К каждому клиенту можно обратится с запросом на поиск определенного клиента, и он может обратится с подобным запросом к любому клиенту. Этот вариант более сложный и требует хорошей теоретической проработки. |
| Автор: ShurikA 7.11.2006, 23:42 |
| ОК имеется в виду 1 вариант. В связи с этом 2 вопроса: 1. Это делать через сервлет, или есть ещё способы? 2. Каким образом? ещё раз извиняусь за такое количество вопросов, я в этом полнуй 0. Начал читать про сокеты и серверсокет, пока что всё вроде ясно но не понятно как я этим могу воспользоваться для моей цели. |
| Автор: LSD 7.11.2006, 23:55 |
| 1. Можно и через сервлет, а можно и без него. Если есть задача написать свою IM систему, то можно реализовать свой сервер и без сервлетов, и работать будет не медленней. 2. Опять же зависит от требований к системе:
|
| Автор: ShurikA 7.11.2006, 23:59 | ||
Ты имеешь в виду создать свой протокол и гонять его через Socket<->ServerSocket? Неужели каждый клиент должен дыть в там случе и цлиентом и сервером одновременно? |
| Автор: LSD 8.11.2006, 00:04 | ||||
Да.
В каком-то смысле да, т.е. он в должен будет уметь принимать входящие соединения и устанавливать исходящие (что при наличии NAT, Proxy, Firewall может стать проблемой), плюс аутентифицировать клиентов (может быть с помощью сервера). |
| Автор: ShurikA 8.11.2006, 00:12 |
| ОК Последний вопрос (на сегодня Так как через Socket<->ServerSocket всё происходит через OutputStream/InputStream, через них и нужно гонят все команды протокола, или же есть способ более элегантный? Добавлено @ 00:13 и ещё: каким , на промер образом можно аутентифицировать клиентов ? |
| Автор: LSD 8.11.2006, 11:57 | ||||
Нету. Если протокол твой собственный, то и его реализация лежит на тебе, впрочем это не так сложно.
Простейший способ: по IP. Клиент регистрируется на сервере по логину и паролю. А потом любой может запросить сервер, что клиент с таким логином имеет такой IP. |
| Автор: ShurikA 8.11.2006, 12:30 |
На пример? |