Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

UDP пакет [D6, Win95/98, WinXP]


RealGanj ©   (2006-06-12 14:22:00) 

Я аматор в этих вопросах, потому не мудить сторого за вопрос.
Хочу написать свой чат. С использованием ServerSocket и ClientSocket нужно создавать сервер. А как сделать, чтобы при запуске программы если запущен экземпляр программы в сети, присоединяться к нему.


RealGanj   (2006-06-26 12:35:00) [1]

Все, разобрался!


Сергей М.   (2006-06-25 19:16:00) [2]


> RealGanj   (25.06.06 15:20) [9]


А не лопнешь от удовольствия ?
Еще и компоненты тебе выбирай)
А ты будешь при этом сидеть, в потолок поплевывать да ждать готовенькое...

Сам-то телодвижения какие-нть планируешь ?


RealGanj   (2006-06-25 15:20:00) [3]


> Нельзя.
> По кр.мере до тех пор, пока ты не определишься с компонентами,
>  использующими UDP-протокол

С каким компонентом предоставите-и на том буду рад!


medved_68   (2006-06-14 08:34:00) [4]


>  А как сделать, чтобы при запуске программы если запущен
> экземпляр программы в сети, присоединяться к нему.


> > Принцып понятен. Нужно проверять весь диапазон IP в подсети?

А зачем???? Если ты пишешь пару прог типа клиент-сервер выдели им определенный диапазон портов а IP адрес сервера пусть забивает клиент при запуске на своей машине клиентского приложения. По крайней мере в различных приложениях такого типа так и сделано (кроме игровых). Просто такие приложения ориентированы не только на IP адрес, но и на сетевое имя компа т. е. пользователь сам вводит либо 1 либо 2 и жмет коннект


Сергей М.   (2006-06-13 15:38:00) [5]


> Можно код этой процедуры?
>


Нельзя.
По кр.мере до тех пор, пока ты не определишься с компонентами, использующими UDP-протокол.


> как в тексте анимированые смайлы отображатть?


Это не имеет никакого отношения к теме вопроса.


RealGanj   (2006-06-13 13:28:00) [6]


> Клиент при старте делает UDPbroadcast-запрос "Сервер, ты
> где ?", сервер слушает такие запросы и отвечает вопрошающим
> клиентам "Я здесь, по такому-то адресу на таком-то порту"

Можно код этой процедуры?

И как в тексте анимированые смайлы отображатть?


Сергей М.   (2006-06-13 08:44:00) [7]


> RealGanj   (12.06.06 15:17) [2]


> Нужно проверять весь диапазон IP в подсети?


Не нужно.

Клиент при старте делает UDPbroadcast-запрос "Сервер, ты где ?", сервер слушает такие запросы и отвечает вопрошающим клиентам "Я здесь, по такому-то адресу на таком-то порту"


Whitevova   (2006-06-12 18:37:00) [8]

Насчёт времени: нет - не очень долго. Если у тебя в сети конечно не миллионы компов. Если пара тысяч, то даже при небольшой скорости соединения не больше 10 секунд. Хотя и ошибаться могу. Но не 10 минут и час это точно. Тут весь мир просканируешь :))


Whitevova   (2006-06-12 18:26:00) [9]


> Принцып понятен. Нужно проверять весь диапазон IP в подсети?
>  Ка это сделать? Я думаю, этот процесс будет долгим


Допустим. Тогда:

(обший вид)

1. Создаешь программу клиент\сервер (2 в 1)
2. При запуске программа сканирует все компьютеры в сети на наличие открытого порта (допустим 7777).

а) Ищем всё компьютеры в сети
б) Проверяем ClientSocket на возможность присоединение к каждому из компьютеров.

3. Как только найден компьютер сервер (с открытым портом). Добавляем его в список серверов (пока не визуальный). Продолжаем поиск.
4. Сканирование закончено. Выводим форму на которой находится ListBox, элементами которого являются ip-адреса или имена компьютеров найденных серверов. А также три кнопки "Присоединиться", "Создать новый ..." и "Выход".
5. Действие пользователя:
а) Либо двойным кликом на имени (ip-сервера),либо нажатием кнопки "Присоединиться" (при выделенном элементе списка), пользователь присоединяется к серверу. Там он общается с теми людьми, кто к нему присоединен.

б) Может нажать на кнопку "Создать новый ...". И создать свой сервер. К которому смогут коннектиться другие.

в) Может поспотреть, что ни одного сервера в сети нет и выйти. Просто нажав "Выход".

6. Макияж делай сам. Сделай различный обмен между серверами. Может что-то дельное и выдет. Смотри - всё в твоих руках :)

P. S. Кто бы мне помог?!!!


RealGanj   (2006-06-12 15:17:00) [10]

Первый способ я сделал.
Я хочу чтобы в подсети был один сервер (при этом сервер может быть на любой машине).
Принцып понятен. Нужно проверять весь диапазон IP в подсети? Ка это сделать? Я думаю, этот процесс будет долгим.


Whitevova   (2006-06-12 14:56:00) [11]

Я предлагаю тебе два решения:

1. Напиши простенький серв. Или добавь в клиенты ServerSocket: например для общения с конкретными людьми. Т.е. клиент будет выступать и в роли сервера и в роли коннектера. Сделай меню создать сервер - принажатии на него ты будешь сервером, а чтобы люди могли к тебе коонект - им надо в  каком-либо месте написать например: /connect ip сервера.

2. А то что ты хочешь - это сложно, но всё же можно... Добавь в клиенты, также как и в первом решении по ServerSocket. Сделай так, чтобы при входе в программу твой клиент сканировал сеть (ну определенный порт конечно (по которому у тебя будут передаваться данные)). Если найден сервер (порт открыт (получилось приконнектиться)), то добавляем ip сервера в какаой-либо список. И так далее. Потом выводим список найденных серверов. Далее двойным кликом на имени сервера из списка коннектимся к нему. Вот и всё.

P.S. Незнаю, понял ли ты. Но ели понял и есть вопросы - спрашивай.


Наверх

Титульная страница Поиск, карта сайта Написать письмо