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

Вниз

Что лучше?   Найти похожие ветки 

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

Наверх





Память: 0.48 MB
Время: 0.046 c
15-1177628719
ЭРИКА
2007-04-27 03:05
2007.05.27
ВСЕМ ,КТО РОДИЛСЯ СЕГОДНЯ!


3-1173282215
Sunders
2007-03-07 18:43
2007.05.27
Сообщение "Object not found" при работе с БД MS SQL


2-1178456869
Фак
2007-05-06 17:07
2007.05.27
ListBox


3-1173241771
nikolay80
2007-03-07 07:29
2007.05.27
Сеть и BDE


2-1178604351
RomanLN
2007-05-08 10:05
2007.05.27
Мастера посоветуйте как лучше организовать печать





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский