Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.056 c
15-1161954746
Гарри Поттер
2006-10-27 17:12
2006.11.12
грядет сухой закон?


3-1157981968
kaif
2006-09-11 17:39
2006.11.12
Кодировка в FoxPro через ADO


2-1161943090
markers
2006-10-27 13:58
2006.11.12
Как проверить существования объекта?


15-1161338945
default
2006-10-20 14:09
2006.11.12
По мотивам двойного хеширования;)


15-1161700019
Витян
2006-10-24 18:26
2006.11.12
Из какой «оперы» слово АВИЗО?