Автор
|
Тема: Simple Client-Server... Simplest sample!
|
Wild Programmer |
опубликован 09-02-2002 02:36 MSK
Ребят, помогите пожайлуйста... Я, ни как не пойму как лучше реализовать Client/Server (не знаю на сколько это важно но я хочу сделать TCP соединение)... То есть как мне слушать сокет, и если, что-то пришло... то ответить клиенту... Надеюсь, кто нибудь из Вас мне поможет... Если не трудно то простейший пример (в идеале с пояснениями)... И ещё... Я, ни как не пойму... если создать событие для сокета, то как его потом ловить... Например,я не хочу, чтобы сервер имел окно... Ну... и как тогда быть... Я, не матёрый программер, поэтому отнеситесь с пониманием? Да, я нащел много исходников но вв каждом реализовано по разному... И с кучей наворотов... Я же хочу пока только основное... понять принцип...
|
MatrixST
|
опубликован 09-02-2002 11:57 MSK
Могу помочь! У мя есть компонент для работы с сетью (сам написал) с помощью него ты могешь легко понять как организовать Client/Server. Если ты заинтересовался говори! Если у тя есть номер в аське скажи его! будет легче общаться. :)) |
delitant
|
опубликован 09-02-2002 16:15 MSK
Пойди в книжный магазин и поищи «Эффективное программирование TCP/IP» Там многие вещи довольно грамотно рассказываются
|
purpe
|
опубликован 09-02-2002 16:37 MSK
2Wild Programmer: если ты решил сурьёзный сервак наваять, то на мой взгляд лучшего примера чем поставляемый с Visual C++ пример веб-сервера не найти. Можно конечно взять исходник апача, но там чёрт ногу сломит. А лучшего клиента чем браузер тоже не найти :)
|
Wild Programmer
|
опубликован 09-02-2002 17:36 MSK
Ребят, спасибо, что откликнулись... Но, эта... Как бы эта сказать :) Я всё ни как не могу панять некоторые "закавыки" в реализации... Вообще вот e-mail мой Wild_Programmer@mail.ru Если кто желает помочь, я буду очень рад... Пока хочу самое простетское (что не есть сурьёзный :) сервер/клиент приложение.. Если Вы не против вопросы по реализации я буду здесь иногда задавать... Только Вы если чего отвечайте? Ну, как? Вот, например первый: Как лучше организовать работы с сервером, как "вечный" цикл while(1){...}, как многопоточное приложение, или через обработку событий... Хотя, что есть события ? :) - их ведь тоже надо как-то обрабатывать... Неважно... Пока у меня голова отнимается... Если события - то нужно окошечко... В принципе можно и окно... Но оно не нужно... Значит и события вроде отпадают... |
server_mouse
|
опубликован 09-02-2002 19:30 MSK
>Как лучше организовать работы с сервером, >как "вечный" цикл while(1){...}, как >многопоточное приложение, или через обработку событий... Клиент лучше делать однопоточным с обработкой по событию. В вечном цикле твоё приложение не сможет обрабатывать др. события (например то что пора завершиться). Извращённые подходы со встраиванием в этот цикл обработки очереди в расчёт не беру. Если не хочешь увидеть как всё процессорное время ушло на твой вечный цикл, выбирай события. Сервер наверное лучше исходя из принципа -- каждому клиенту свой поток. >Если события - то нужно окошечко... Враки! http://www.sources.ru/cpp/cpp_network_evets_winsock2.shtml >В принципе можно и окно... Но оно не нужно... И как ты будешь завершать его работу? Через TaskManager->TerminateProcess ?? Хотя конечно можно и консоль... или сервис...
|
MatrixST
|
опубликован 09-02-2002 20:33 MSK
2Wild Programmer: Яж те говорю что заведи себе аську! Я те все объясню! |
dvorobjov
|
опубликован 09-02-2002 21:17 MSK
server_mouse прав. "Каждому клиенту свой поток" - наиболее простое и качественное решение. Ты можешь для каждого потока создать структуру, в которой он будет описывать свое текущее состояние и хранить всякие там ресурсы или ссылки на них. Как только получаешь коннект, создаешь экземпляр такой структуры и заполняешь ее, затем создаешь поток и передаешь ему ее адрес. Проконтролировать его (поток) нет никакой сложности. И загрузки процессора лишней нет. |
delitant
|
опубликован 09-02-2002 21:41 MSK
На мой взгляд, хороший пример сетевой проги в которой явно проявляется маштабируемость. Находится на uinc.ru - это их прокси сервер. Ну правда и у него есть свои не точности, но их меньше чем в других примерах. Кстати он вроде на сорсах тоже есть. 2 server_mouse. Ссылка котирую, ты подкинул Wild Programmer - у вряд ли ему поможет. Так как рановато ему еще такими игрушками баловаться. 2 Wild Programmer. Потренируйся пока с блокирующими функциями. напиши пару прог с в которых была бы показана работа smpt, pop3, http. Потом select, ioctlsocket, после WSAAsyncSelect и тому подобные вещи.
|
Wild Programmer
|
опубликован 10-02-2002 12:47 MSK
2 Matix... Да, это... Есть у меня одна аська... Хватит, наверное :) 147264231... Только, как ты мне объяснишь... Это, может показаться странным, но в I'net'е я только после 24:00(01:00) :( И, даже, не спрашивайте "почему?" :) Я, и так надыбал простеньких исходников, теперь их разбираю... Мне, сразу приглянулся, один... Там, через собщения... Друой, - отдельным потоком, причем, как то странно... Создаётся поток, blah-blah-blah... Поток закрывается, а перед закрытием из закрывающегося потока создаётся ещё один поток.... Ну, ни чего и не такое разбирали :) Спасибо всем ещё, раз за советы... |
Banev
|
опубликован 10-02-2002 18:47 MSK
Если под MFC, то может http://www.sources.ru/cpp/cpp_mfc_client_server_technology.shtml пригодится |
alex2808
|
опубликован 13-02-2002 02:33 MSK
А сырцов по другим технологиям Client-Server никто не встречал? Corba,DCOM,др. |
alex2808
|
опубликован 14-02-2002 15:53 MSK
Ребята...Очень интересная тема, для каждого клиента - свой поток. Можете кинуть ссылочку или примерчик реализации... |
purpe
|
опубликован 14-02-2002 15:59 MSK
пока я здесь, то буду всегда рекомандовать пример веб-сервера, который поставляется с Visual Studio.
|
alex2808
|
опубликован 14-02-2002 16:25 MSK
2purpe: Он в MSDN называется HTTPSVR в вкладке MFC Internet Samples? |
alex2808
|
опубликован 14-02-2002 16:38 MSK
Ага нашел еще один в SDK... Sample TCP/UDP server.. Может этот? |
AdminDimon
|
опубликован 16-02-2002 18:41 MSK
Кстати, прикупил сегодня москалевскую (питерскую?) книжицу "Программирование в сетях Microsoft Windows" Э.Джонс, Д.Оланд. ДОроговато, 22500 руб. беларусских ;-)(~ 13,5$), но она того стоит. Рекомендую! |