Форум: "Сети";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизUDP пакет Найти похожие ветки
← →
RealGanj (2006-06-12 14:22) [0]Я аматор в этих вопросах, потому не мудить сторого за вопрос.
Хочу написать свой чат. С использованием ServerSocket и ClientSocket нужно создавать сервер. А как сделать, чтобы при запуске программы если запущен экземпляр программы в сети, присоединяться к нему.
← →
Whitevova © (2006-06-12 14:56) [1]Я предлагаю тебе два решения:
1. Напиши простенький серв. Или добавь в клиенты ServerSocket: например для общения с конкретными людьми. Т.е. клиент будет выступать и в роли сервера и в роли коннектера. Сделай меню создать сервер - принажатии на него ты будешь сервером, а чтобы люди могли к тебе коонект - им надо в каком-либо месте написать например: /connect ip сервера.
2. А то что ты хочешь - это сложно, но всё же можно... Добавь в клиенты, также как и в первом решении по ServerSocket. Сделай так, чтобы при входе в программу твой клиент сканировал сеть (ну определенный порт конечно (по которому у тебя будут передаваться данные)). Если найден сервер (порт открыт (получилось приконнектиться)), то добавляем ip сервера в какаой-либо список. И так далее. Потом выводим список найденных серверов. Далее двойным кликом на имени сервера из списка коннектимся к нему. Вот и всё.
P.S. Незнаю, понял ли ты. Но ели понял и есть вопросы - спрашивай.
← →
RealGanj (2006-06-12 15:17) [2]Первый способ я сделал.
Я хочу чтобы в подсети был один сервер (при этом сервер может быть на любой машине).
Принцып понятен. Нужно проверять весь диапазон IP в подсети? Ка это сделать? Я думаю, этот процесс будет долгим.
← →
Whitevova © (2006-06-12 18:26) [3]
> Принцып понятен. Нужно проверять весь диапазон IP в подсети?
> Ка это сделать? Я думаю, этот процесс будет долгим
Допустим. Тогда:
(обший вид)
1. Создаешь программу клиент\сервер (2 в 1)
2. При запуске программа сканирует все компьютеры в сети на наличие открытого порта (допустим 7777).
а) Ищем всё компьютеры в сети
б) Проверяем ClientSocket на возможность присоединение к каждому из компьютеров.
3. Как только найден компьютер сервер (с открытым портом). Добавляем его в список серверов (пока не визуальный). Продолжаем поиск.
4. Сканирование закончено. Выводим форму на которой находится ListBox, элементами которого являются ip-адреса или имена компьютеров найденных серверов. А также три кнопки "Присоединиться", "Создать новый ..." и "Выход".
5. Действие пользователя:
а) Либо двойным кликом на имени (ip-сервера),либо нажатием кнопки "Присоединиться" (при выделенном элементе списка), пользователь присоединяется к серверу. Там он общается с теми людьми, кто к нему присоединен.
б) Может нажать на кнопку "Создать новый ...". И создать свой сервер. К которому смогут коннектиться другие.
в) Может поспотреть, что ни одного сервера в сети нет и выйти. Просто нажав "Выход".
6. Макияж делай сам. Сделай различный обмен между серверами. Может что-то дельное и выдет. Смотри - всё в твоих руках :)
P. S. Кто бы мне помог?!!!
← →
Whitevova © (2006-06-12 18:37) [4]Насчёт времени: нет - не очень долго. Если у тебя в сети конечно не миллионы компов. Если пара тысяч, то даже при небольшой скорости соединения не больше 10 секунд. Хотя и ошибаться могу. Но не 10 минут и час это точно. Тут весь мир просканируешь :))
← →
Сергей М. © (2006-06-13 08:44) [5]
> RealGanj (12.06.06 15:17) [2]
> Нужно проверять весь диапазон IP в подсети?
Не нужно.
Клиент при старте делает UDPbroadcast-запрос "Сервер, ты где ?", сервер слушает такие запросы и отвечает вопрошающим клиентам "Я здесь, по такому-то адресу на таком-то порту"
← →
RealGanj (2006-06-13 13:28) [6]
> Клиент при старте делает UDPbroadcast-запрос "Сервер, ты
> где ?", сервер слушает такие запросы и отвечает вопрошающим
> клиентам "Я здесь, по такому-то адресу на таком-то порту"
Можно код этой процедуры?
И как в тексте анимированые смайлы отображатть?
← →
Сергей М. © (2006-06-13 15:38) [7]
> Можно код этой процедуры?
>
Нельзя.
По кр.мере до тех пор, пока ты не определишься с компонентами, использующими UDP-протокол.
> как в тексте анимированые смайлы отображатть?
Это не имеет никакого отношения к теме вопроса.
← →
medved_68 © (2006-06-14 08:34) [8]
> А как сделать, чтобы при запуске программы если запущен
> экземпляр программы в сети, присоединяться к нему.
> > Принцып понятен. Нужно проверять весь диапазон IP в подсети?
А зачем???? Если ты пишешь пару прог типа клиент-сервер выдели им определенный диапазон портов а IP адрес сервера пусть забивает клиент при запуске на своей машине клиентского приложения. По крайней мере в различных приложениях такого типа так и сделано (кроме игровых). Просто такие приложения ориентированы не только на IP адрес, но и на сетевое имя компа т. е. пользователь сам вводит либо 1 либо 2 и жмет коннект
← →
RealGanj (2006-06-25 15:20) [9]
> Нельзя.
> По кр.мере до тех пор, пока ты не определишься с компонентами,
> использующими UDP-протокол
С каким компонентом предоставите-и на том буду рад!
← →
Сергей М. © (2006-06-25 19:16) [10]
> RealGanj (25.06.06 15:20) [9]
А не лопнешь от удовольствия ?
Еще и компоненты тебе выбирай)
А ты будешь при этом сидеть, в потолок поплевывать да ждать готовенькое...
Сам-то телодвижения какие-нть планируешь ?
← →
RealGanj (2006-06-26 12:35) [11]Все, разобрался!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.07 c