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

Вниз

1 Serv+N Clients   Найти похожие ветки 

 
Felix the cat ©   (2002-12-18 22:23) [0]

Добрые программеры!
Такой вот маленький вопросик возник:
Есть машина-"сервер" и несколько машин-"клиентов".
Какой компонент лучше использовать для их "общения"?
Как лучше организовать связь между ними? Чтобы "сервер" постоянно был "в курсе" - включен "клиент" или нет, а в случае перезагрузки или отключения "клиента" на "сервере" бы это становилось известно... По типу программ для управления несколькими компами с одного...
Со схемой 1:1 (1 клиент, 1 сервер) я вроде бы худо-бедно разобрался (спасибо всем, кто помог советом).
А вот тут с траблами столкнулся.
Наставьте на путь истинный, пожалуйста..
Заранее всем спасибо.


 
Ghost_ ©   (2002-12-19 08:18) [1]

Так система 1-1 и 1-~ вобщем ничем не отличается


 
Felix the cat ©   (2002-12-19 09:00) [2]

Ghost_ ©
Так система 1-1 и 1-~ вобщем ничем не отличается


Я в таких вещах не очень силен - с сокетами только начал разбираться... Просто я не знаю, как сделать, чтобы несколько машин сразу работали с 1 сервером - это же для каждой нужен свой порт (или не обязательно?), не кидать же на форму-сервер кучу компонентов ServerSocket и ClientSocket... Может, как-то можно динамически создавать массивы этих самых сокетов? Если знаете - подскажите, пожалуйста.. или хотя бы набросочек примера по схеме 1-2 киньте, а там уж я попытаюсь вникнуть..
Заранее пасибки всем.


 
Reindeer Moss Eater   (2002-12-19 09:01) [3]

TidTCPServer + Any TCPClient


 
Ghost_ ©   (2002-12-19 09:19) [4]


> Felix the cat ©

Так он и будет создаваться этот массив..на то они и компоненты..в Делфи есть примеры и причем очень не плохие..в 6 и 7 точно там есть компоненты INDY там даже пример неплохого чата есть..все на твоем винте..


 
Digitman ©   (2002-12-19 09:26) [5]


>не кидать же на форму-сервер кучу компонентов ServerSocket и ClientSocket


Можно вообще ничего не кидать. Приложение, использующее ServerSocket и ClientSocket, может вообще не иметь ни одной формы - все будет прекрасно работать.


> для каждой нужен свой порт (или не обязательно?),


Не обязательно.


 
dimich1978 ©   (2002-12-19 12:10) [6]

Зачем каждому клиенту свой порт, а не проще ли распознавать от кого пришло. Ну например
Клиент отсылает типа Я готов_имякомпа, а сервак при приеме будет по концовке различать от кого пришло.
Таким же макаром может отсылаться и определенной машине. Обратно приписав название и клиент разобрав что типа это ему выполняет действия необходимые.
Вообщем посмотри в кладовке я выкладывал готовую программу с исходниками, там мало но в тему. Называется Server-Client 1.0


 
izyum ©   (2002-12-19 17:07) [7]

Если сервер постоянно должен отслеживать состояние клиента, то используй UDP-компоненты с постоянным обменом какими-либо контрольными сообщениями между клиентом и сервером. Принцип такой: если сервер не получил сообщение от клиента в течении n секунд, значит либо отпал клиент, либо упала сеть. Если клиент не получил n секунд сообщение от сервера - ан-н-н-алогично:)
Дело в том, что если использовать разного рода ServerSocket&ClientSocket (которые ориентированы на TCP\IP) будут проблемы при попытке обмена сообщениями если кто-то из участников обмена (либо сервер, либо клиент) отпал, а вторая сторона пытается приконектиться или предать сообщение, думая что связь имеется.


 
Digitman ©   (2002-12-19 17:22) [8]

>izyum


> Дело в том, что если использовать разного рода ServerSocket&ClientSocket
> ... будут проблемы при попытке
> обмена сообщениями если кто-то из участников обмена (либо
> сервер, либо клиент) отпал, а вторая сторона пытается приконектиться
> или предать сообщение, думая что связь имеется.


Это какие такие проблемы ? Не знаю таких. Не сочти за труд -просвети ...


 
izyum ©   (2002-12-19 18:02) [9]

>Это какие такие проблемы ? Не знаю таких. Не сочти за труд -просвети ...

Дословно не помню, но что-то вроде "Asinhronus Socket error!" или чего-то такое. Возникает когда клиент пытается приконектится к серверу (ClientSocket.Open), а серверный соккет не работае. Причем ошибка вылазит через несколько секунд, и обработкой OnError не лечится, по крайней мере у меня. Отлавливал ее я в обработчике Application.OnException. В принципе все получилось, но как-то кривовато. А перешел на UDP-компоненты и все стало гораздо стройней и красивее:)


 
L$D   (2002-12-19 20:25) [10]

Какие то бестолковые парни...

Секи сюда :
На данном сайте есть пример чата качай его и все поймешь.

Лн организован так
Есть 1 сервак который запускают на одной машине ,
есть множество клиентов которые коннектятся к этому
серваку.

Какой то клиент сначала посылает сообщение - оно идет на сервак
а уже сервак рассылает его всем.

То же самое будет и у тебя - кочай смотри - там все элементарно

ну уж если у тебя будут напряги то пиши на мыло - пришлю тебе пример твоей проги


 
Александр Спелицин ©   (2002-12-19 22:48) [11]

Рихтер. Программирование сервеных приложений для Windows 2000.


 
Felix the cat ©   (2002-12-20 00:00) [12]

Всем большие спасибки!
Постараюсь разобраться в том, что вы все прислали...
2 L$D - чат я скачаю и гляну, спасибо, но дело в том, что мне не нужно, чтобы сервак всем отсылал... Сервак должен работать только с тем клиентом, который в данный момент времени прислал запрос или еще что...
Просто хочется сделать что-то типа простенькой программы для управления компами в клубе... (установить время игры, выключить, заблокировать после истечения времени, разблокировать и т.д. и все это делать с 1 машины)
2 Александр Спелицин ( Рихтер. Программирование сервеных приложений для Windows 2000) - а подобная книжка для 98\МЕ есть?


 
izyum ©   (2002-12-20 14:27) [13]

> Просто хочется сделать что-то типа простенькой программы для управления компами в клубе

А зачем изобретать велосипед? Ну если конечно очень хочется самому написать, а если просто надо работать, то либо ClubControl, либо идешь на http://www.moris.ru/anmak ивсе твои проблемы решаются:)


 
really_deflorator   (2002-12-22 01:59) [14]

Вы чё? Совсем тупые что ли? Не можете ребёнку нормально объяснить?
Мастера, на%...
СерверСокет поддерживает работу с несколькими клиентами:
serversocket.socket.connections[i]...
чё-то такое...
но и тебе, Felix the cat © не зазороно хелпы почитать


 
NewGuest   (2002-12-22 19:00) [15]

Использовать, на мой взгляд, лучше IdTCPClient и Server
Простой пример есть прямо в папке Demos\Indy\
Запустите несколько клиентов, вот вам и Сервер + N клиентов



Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
3-38064
Ivanov Sergey
2003-01-25 23:43
2003.02.13
ib6.ForsedWrites := Disabled; это опасно?


1-38182
lipskiy
2003-02-02 22:01
2003.02.13
Как обновлять текст хинта TRXTrayIcon без его гашения?


1-38196
Вовчик
2003-02-04 23:43
2003.02.13
поиск ListBox


1-38180
kull
2003-02-04 15:33
2003.02.13
Кто-нибудь может объяснить это?


1-38336
Chubais
2003-02-03 14:00
2003.02.13
Обработка исключений