Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.045 c
15-1176885879
pogi
2007-04-18 12:44
2007.05.27
Вакансия: Проектировщик-программист Delphi


15-1177418638
ALLON
2007-04-24 16:43
2007.05.27
работа Delphi в ограниченом юзере


1-1175265506
kodov
2007-03-30 18:38
2007.05.27
Перемещение элементов в ListBox


15-1178039529
Scaltro
2007-05-01 21:12
2007.05.27
Помогите, очень нужент крак к программе Actual Title Buttons 4.3


2-1177655982
ОльгаС
2007-04-27 10:39
2007.05.27
Ehlib и инсталяция