Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Вопросик...   Найти похожие ветки 

 
Romm ©   (2007-04-13 14:20) [0]

Здравствуйте, Мастера!
Возникла проблема, помогите решить.
Программа содержащая TClientSocket должна быть соединена одновременно с несколькими компами.Как это осуществить наиболее просто. Почему-то мне в ум приходит две мысли:

1)Каждую секунду менять IP или хост --> соединяться, разьединяться...
2)Создать много Сокетов(а так вообще прога работать будет?)...

может у кого есть идеи или советы какие?!

пасиб.


 
Johnmen ©   (2007-04-13 14:23) [1]

1) бредовая чушь или чешуёвый бред :)
2) вот это правильное слово


 
Romm ©   (2007-04-13 14:39) [2]


> 1) бредовая чушь или чешуёвый бред :)
> 2) вот это правильное слово

гы гы.. не сомневался... а есть пример НЕ бредовой идеи?

Кстати, только что столкнулся с еще одной проблемкой:
инфу о машине где лучше хранить? С начала пытался запихать в ini файлы-не вышло-ведь машин может быть 5,10,400.. Ух..придется мозги в аварийный режим вводить))


 
Johnmen ©   (2007-04-13 14:47) [3]

Все идеи уже давно придуманы и озвучены :)
Напр. идея "один коннект - один поток".
Инфу о машине можно хранить где и как угодно. Всё зависит от требований к хранению.


 
tesseract ©   (2007-04-13 14:50) [4]


> инфу о машине где лучше хранить? С начала пытался запихать
> в ini файлы-не вышло-ведь машин может быть 5,10,400..


Если имееться в виду как обнаруживать машины - UDP+Broadcast.


 
Romm ©   (2007-04-13 14:56) [5]


> Инфу о машине можно хранить где и как угодно. Всё зависит
> от требований к хранению

пример:
[comp1]
name="xxx"
IP=127.127.127.127

[comp2]
name...

заголовки чтоли использовать?!..


> Напр. идея "один коннект - один поток".
даже так?..


 
Johnmen ©   (2007-04-13 15:01) [6]


> пример:

пример - это не требования.

> даже так?..

Не побоюсь этого слова - ТОЛЬКО ТАК!
:)


 
Romm ©   (2007-04-13 15:04) [7]

Я что-то запутался совсем, направь на путь истинный в обоих вопросах, а то с я скоро с ума сойду :)


 
Johnmen ©   (2007-04-13 15:10) [8]

По первому - чтобы рекомендовать способ хранения, надо знать требования к хранению. Из тех скудных исх.данных, что ты привёл, можно рекомендовать типизированный файл в качестве хранилища.
По второму - для каждого сокет коннекшна, он же TSocketConnection, свой поток, он же тред, он же TThread.


 
Сергей М. ©   (2007-04-13 15:16) [9]

Потенциальное соединение с каждым сервером из списка требуемых предполагает отдельный экз-р TClientSocket для этого соединения.

Ы ?


 
Romm ©   (2007-04-13 15:17) [10]


> тех скудных исх.данных, что ты привёл

а что там еще говорить?!
всего прога будет расчитана на 12 машин.Активируем 1 машину,настраиваем(имя и IP адрес-ВСЕ,больше ничего не нужно,пока :) ). Вот эти данные нужно каким-то образом сохранить, чтобы можно было прочитать:))))


 
Johnmen ©   (2007-04-13 15:22) [11]

Тогда однозначно типизированный файл.


 
Romm ©   (2007-04-13 15:24) [12]


> типизированный файл

щаЗ попробую..


 
Romm ©   (2007-04-13 15:28) [13]


> Потенциальное соединение с каждым сервером из списка требуемых
> предполагает отдельный экз-р TClientSocket для этого соединения.
>

вот и я про тоже...


 
Romm ©   (2007-04-13 15:30) [14]

а вот вопросик не в тему немножко)
пишу событие для 13-ти checkbox"ов
как получить какое-либо значение,например 10-ого checkbox"a??

пробую так:
procedure TOptionForm.FormClick(Sender: TObject);
var
 check:boolean;
begin
 check:=CheckBox[10].Checked;
end
;

не получается(( неужели для всех нужно писать свой код((((


 
Сергей М. ©   (2007-04-13 15:31) [15]


> Romm ©   (13.04.07 15:24) [12]


Надо же быть таким тупым)

Он говорит, мол, "хочу иметь один TClientSocket, одновременно (цитата !) соединенный с несколькими серверами", ему говорят "не получится", а он продолжает свое долдонить  про свои ини-файлы))


 
Romm ©   (2007-04-13 15:37) [16]

Надо же быть таким тупым)

просто седня день такой)) пятница да еще и 13 :))мозг в отрубе


> один TClientSocket, одновременно (цитата !) соединенный
> с несколькими серверами

ну есть же проги,которые ОДНОВРЕМЕННО соединяются с несколькими серверами. (пишу прогу для удаленного управления компами).


 
Сергей М. ©   (2007-04-13 15:39) [17]


> Romm ©   (13.04.07 15:37) [16]


> есть же проги,которые ОДНОВРЕМЕННО соединяются с несколькими
> серверами


Ну да, есть.

Но кто тебе сказал, что такие "проги" при этом используют один-единственный TClientSocket ?

И причем тут ini-файлы ?


 
Romm ©   (2007-04-13 15:40) [18]

Вот что я решил:
проше будет выбирать из списка машину -> жать Connect и управлять ей пока глаза не вылезут!!!!!!!

//наверное и щас степил? :)


 
Romm ©   (2007-04-13 15:42) [19]

ступил* :)


> И причем тут ini-файлы

они с сокетами не связаны,почти )) в них инфу о компах хранить нужно..


 
Сергей М. ©   (2007-04-13 15:49) [20]


> Вот что я решил


Хозяин - барин !)


 
Johnmen ©   (2007-04-13 15:53) [21]


> пишу прогу для удаленного управления компами

"А впрочем, тебе рано ещё" (с)


 
Romm ©   (2007-04-13 17:04) [22]


> "А впрочем, тебе рано ещё" (с)

у всех бывает первый раз! Вот вы с рождения програмистами были?!?!?!?!?!


 
Romm ©   (2007-04-13 17:07) [23]

Повторюсь:

а вот вопросик не в тему немножко)
пишу событие для 13-ти checkbox"ов
как получить какое-либо значение,например 10-ого checkbox"a??

пробую так:
procedure TOptionForm.FormClick(Sender: TObject);
var
check:boolean;
begin
check:=CheckBox[10].Checked;
end;

не получается(( неужели для всех нужно писать свой код((((
Вообще можно массив из компонентов создать?!


 
Антоныч_ск   (2007-04-13 18:00) [24]

Ставиш каждому checkbox-у уникальное значение св-ва Tag, назначаешь им всем один и тот же обработчик какого-нибудь события (OnClick, например) и пишешь:

procedure TOptionForm.CheckBoxClick(Sender: TObject);
begin
 ShowMessage("Щёлкнут CheckBox № "+IntToStr(TCheckBox(Sender).Tag));
end;

Усложняем по образцу.
Массив можно сделать из всего. Была бы необходимость :-)


 
Romm ©   (2007-04-13 18:12) [25]


> Антоныч_ск   (13.04.07 18:00) [24]

Пасиб - получилось)

А можешь пример массива этих самых CheckBox написать?


 
Антоныч_ск   (2007-04-13 18:23) [26]

На вскидку примерно так:
Var
 CheckBoxArray: array[1..10] of TCheckBox;
 ...
begin
 ...
 for i:=1 to 10 do
 begin
    CheckBoxArray[i]:=TCheckBox.Create(OptionForm);
    CheckBoxArray[i].Parent:=OptionForm;
    CheckBoxArray[i].Left:=5;
    CheckBoxArray[i].Top:=i*40+5;
    CheckBoxArray[i].Height:=20;
    CheckBoxArray[i].Width:=300;
    CheckBoxArray[i].OnClick:=CheckBoxClick;
    // и по образцу задаёшь нужные свойства
 end;
end;


 
Romm ©   (2007-04-13 18:33) [27]


> Антоныч_ск   (13.04.07 18:23) [26]

сенск...)))))))))))))))пока вопросов нет


 
Johnmen ©   (2007-04-13 18:34) [28]


> у всех бывает первый раз! Вот вы с рождения програмистами
> были?!?!?!?!?!

Нет конечно!
Да вот только я не начинал с "прогу для удаленного управления компами", не зная элементарных основ типа "как получить какое-либо значение,например 10-ого checkbox"a". И уж тем более не учился, прося других в стиле "слабо" решить мою элементарную "задачку" типа "А можешь пример массива этих самых CheckBox написать?".


 
Romm ©   (2007-04-13 18:48) [29]


> Johnmen ©   (13.04.07 18:34) [28]

ну я спорить с тобой не буду)) НО
за сегодня я научился получать какое-либо значение, например 10-го chqckbox"a, научился создавать массивы элементов, благодаря хорошему человеку, который не говорил: "иди книги для чайников читай", а реально обьяснил... Ребят, если бы все так делали.. :)


 
Romm ©   (2007-04-13 19:02) [30]


> Антоныч_ск   (13.04.07 18:23) [26]

я поспешил немного :)

с динамическим массивом я разобрался, а вот если мне нужно сохранить значения уже созданных компонентов, то?..

procedure TOptionForm.SaveParam;
var
 F:TIniFile;
 ArCheckBox: array[1..12] of TCheckBox;
 i:Integer;
begin
 F:=TIniFile.Create(ExtractFilePath(ParamStr(0))+"option.ini");
 for i:=1 to 12 do
    F.WriteBool("Checked",IntToStr(i),ArCheckBox[i].Checked);  
 F.Free;
end;


напиши пожалуста, если так можно вообще...


 
Romm ©   (2007-04-13 19:05) [31]

О! нашел статью..

{10 элементов компонентного типа TLed}
LED : array[1..10] of TLed;

//При необходимости динамического создания LED-компонентов организуйте цикл, пример которого мы приводим ниже:

for counter := 1 to 10 do
begin
 LED[counter]:= TLED.Create;
 LED[counter].top := ...
 LED[counter].Left := ...
 LED[counter].Parent := Mainform;   {что-то типа этого}
end;

//Если компоненты уже присутствуют на форме (в режиме проектирования), //сделайте их элементами массива, например так:

leds := 0;
for counter := 0 to Form.Componentcount do
begin
 if (components[counter] is TLED) then
 begin
   inc(leds);
   LED[leds] := TLED(components[counter]);
 end
end;


нужно попробовать....


 
Anatoly Podgoretsky ©   (2007-04-14 13:30) [32]

> Romm  (13.04.2007 17:04:22)  [22]

Тебе рано и не спорь, и не то что бы писать коммуникационный программы, но Hello Word. Начни с простого. Со сложения двух чисел например.


 
Romm ©   (2007-04-14 13:36) [33]


> Со сложения двух чисел например

это как? :)


> Тебе рано и не спорь

знаю, но нужно, для дела... уже почти все готово.. почти.. %10 :))


 
Stell   (2007-04-17 14:20) [34]


> > Со сложения двух чисел например
>это как? :)

Это
function Add(Value1: integer; Value2: integer):integer;
begin
 Result := Value1 + Value2;
end;

......
ShowMessage(IntToStr(Add(2,2)));
.....
:):)


 
Romm ©   (2007-04-17 14:29) [35]


> Stell   (17.04.07 14:20) [34]

будет над чем ночью подумать :)


> function Add(Value1: integer; Value2: integer):integer;
> begin
>  Result := Value1 + Value2;
> end;

не проще так

function Add(a, b: integer):integer;
begin
  Result :=a+b;
end;

? :)



Страницы: 1 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.025 c
2-1176804348
likenoother
2007-04-17 14:05
2007.05.06
обозначение углов


2-1176787851
allucard
2007-04-17 09:30
2007.05.06
Как внутри класса динамически создавать обьекты?


2-1176755058
tigraman
2007-04-17 00:24
2007.05.06
Работа с мемо


15-1175938959
ЭРИКА
2007-04-07 13:42
2007.05.06
ПОЗДРАВЛЕНИЕ


15-1176167708
Riply
2007-04-10 05:15
2007.05.06
Ищу удаленную работу.