Текущий архив: 2007.05.27;
Скачать: CL | DM;
ВнизЧто лучше? Найти похожие ветки
← →
IgneouS © (2006-11-20 20:00) [0]Здравствуйте! Я недавно решил сделать программу клиент\сервер для обмена файлами, голосом и т.д.. До этого я делал такие программы через Client и Server Socket"ы. Прописывал в ручную что происходит при коннекте клиентрского приложения к серверу (создание потока работы с клиентом и т.д.), в клиенте тоже самое - сам писал что при коннекте должен создаться поток и делать ..... А сейчас узнал, что есть компоненты типа TidThreadMgrDefault и TidThreadMgrPool, которые, судя по тому что я о них прочитал делают тоже самое в комплекте с TCPClient и TCVPServer Socket"ами. Вот и хотелось бы узнать действително ли это так? И если да - то как это лучше использовать?
← →
Орион © (2006-11-20 20:30) [1]c TIdTCPClient и TIdTCPServer.
> А сейчас узнал, что есть компоненты типа TidThreadMgrDefault
> и TidThreadMgrPool, которые, судя по тому что я о них прочитал
> делают тоже самое
очень грубо говоря - да.
> И если да - то как это лучше использовать?
дык, как хочешь - так и используй :)
← →
IgneouS © (2006-11-20 22:15) [2]Орион - если "очень грубо говоря - да.", то что лучше? Вроде если использовать компоненты, то часть того, что я прописываю в ручную должны будут делать они сами... Так? А не урежут ли они мои возможности?
← →
Сергей М. © (2006-11-21 08:13) [3]
> при коннекте должен создаться поток
Зачем ?
← →
IgneouS © (2006-11-21 13:32) [4]Сергей. Так как клиент\сервер обмениваются пакетами определенной структуры(код действия, ...., .......... (данные, соответствующие коду действия. Тут может быть размер и имя посылаемого файла или информация о пользователе (логин, пароль, ФИО, Адрес, телефон и т.д.))), то необходимо и соответствующие принятие\отправка этих данных. Поток существует до того, пока клиент не отключиться или серевер его принудительно не отключит...
Возможно вы думаете, что в клиенте можно обойтись без потока, но это не так. Так как если в клиенте не будет потока конкретного типа, то сервер, в котором все происходит через потоки такого же типа, просто не поймет что ему посылает, и посылает ли вообще клиент.
← →
Сергей М. © (2006-11-21 13:44) [5]
> IgneouS © (21.11.06 13:32) [4]
> Возможно вы думаете
Я думаю, что у тебя в голове путаница с пониманием разницы между потоками кода (threads) и потоками данных (streams)
← →
IgneouS © (2006-11-21 14:54) [6]
> Я думаю, что у тебя в голове путаница с пониманием разницы
> между потоками кода (threads) и потоками данных (streams)
Нет, сейчас у меня путаницы нет... да вроде и не было... И вопрос совсем не в этом. Я спрашивал через что лучше делать клиент\серверную прогу. А ты мне говоришь что я не понимаю того, что до этого сам сделал, хотя ты даже не видел того о чем говоришь ...
← →
Сергей М. © (2006-11-21 15:08) [7]
> у меня путаницы нет
Тогда поехали сначала - зачем тебе threads ?
Цитирую тебя:
"..есть компоненты типа TidThreadMgrDefault и TidThreadMgrPool .."
> через что лучше
Лучше все то любое, что не через задницу.
> А ты мне говоришь что я не понимаю
А ты и вправду не понимаешь)
← →
IgneouS © (2006-11-21 15:28) [8]Во-первый: потоки на сервере(TServerClientThread) мне нужны для того, чтобы можно было работать одновремменно со всеми клиентами,а не так чтобы выполнялось действие с одним, потом со вторым... а 100 получит результат только через ...
У клиента так же есть поток(класса TThread - обычный поток), он нужен для того, чтобы можно было управлять клиентом(спящий режим например). Вообщем с потоком удобнее. Но возможно и без него можно))). А уже внутри него читается что пришло сервера или наоборот отправляются серверу данные ( уже Stream). Относитель того что пришло с сервера или было отправлено делаются определенные вещи.
И ещё на сервере создается поток класса TServerClientThread, он находится внутри другого, стандартного потока создаваемого при коннекте клиента. Это объяснять долго и не зачем. Вопрос совсем не в этом.
← →
Сергей М. © (2006-11-21 15:44) [9]
> IgneouS © (21.11.06 15:28) [8]
> потоки на сервере(TServerClientThread) мне нужны для того,
> чтобы можно было работать одновремменно со всеми клиентами
И где это условие обозначено в первоначальном вопросе ?
Нигде.
Потому и возникло у меня сомнение.
и при чем здесь TidThreadMgrDefault и TidThreadMgrPool ?
Это Indy, а TServerClientThread имеет отношение к TServerSocket.
TServerSocket и TIdTCPServer - совершенно разные компоненты.
> У клиента так же есть поток(класса TThread - обычный поток),
> он нужен для того, чтобы можно было управлять клиентом(спящий
> режим например). Вообщем с потоком удобнее. Но возможно
> и без него можно
Вот и я говорю - зачем thread клиенту ?
Ты ведь и сам себе не сможешь ответить вразумительно на сей вопрос)
Thread"ы нужны тогда, когда в них есть реальная обоснованная необходимость. а не для того "щоб було".
> поток класса TServerClientThread, он находится внутри другого
Поток не может быть "внутри другого", это галиматья.
← →
Eraser © (2006-11-21 15:44) [10]> [8] IgneouS © (21.11.06 15:28)
> Во-первый: потоки на сервере(TServerClientThread) мне нужны
> для того, чтобы можно было работать одновремменно со всеми
> клиентами,а не так чтобы выполнялось действие с одним, потом
> со вторым... а 100 получит результат только через ...
Indy сервер по-умолчанию многопоточный, так что ничего там городить не надо.
> Вопрос совсем не в этом.
а в чем?
Страницы: 1 вся ветка
Текущий архив: 2007.05.27;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.045 c