Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.01 c
3-38041
Berg
2003-01-28 14:00
2003.02.13
Программное создание драйвера для работы с ADO


1-38236
Sergeyy
2003-02-05 12:15
2003.02.13
всплывающая подсказка


1-38228
REA
2003-02-04 13:24
2003.02.13
TActionToolbar usage


1-38337
Armageddon
2003-02-03 18:40
2003.02.13
Как програмно задать шрифт в RichEdit.


14-38449
Tsr
2003-01-29 17:43
2003.02.13
Пижоны





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский