Форум: "Сети";
Текущий архив: 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