Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 09:56   #1
Denutrror
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 59
Вопрос Массив Tclientsocket. Как обробатывать события для массива Tclientsocket `ов.

Сразу к делу: Есть вот такой код для ClientSocket`a.

Код:
type
{Класс для работы с Сокетами}
   MyClass = class
   class procedure ClientMessageRec (Sender: TObject; Socket: TCustomWinSocket);  //процедура приёма сообщения
   end;

var
  MyClientSocket: TClientSocket;

{Подключение к серверу}
MyClientSocket:= TclientSocket.Create(nil);
MyClientSocket.OnRead:= MyClass.ClientMessageRec;
MyClientSocket.Port:= 12032;
MyClientSocket.Open;

{процедура приёма сообщения и ответа на него (Она же ClientSocketRead }
class procedure myclass.ClientMessageRec (Sender: TObject; Socket: TCustomWinSocket);
begin
if socket.ReceiveText = 'Hi!' then
socket.SendText('Hi!')
else
socket.Close;
end;
Внимание вопрос: Как сделать тоже, что приведено выше, но только для целого массива клиентов, а не для 1го. Т.е. как реализовать обработку события (ClientSocketRead) если я использую не один TClientSocket, а массив из 10 TClientSocket`ов (MyClientSocket: array [1..10] of TClientSocket) ?
К тому же каждый из Клиентов использует разный порт (CPort: array [0..9] of integer)


P.S. Прошу задавать вопросы, если я что-то непонятно описал.
Denutrror вне форума Ответить с цитированием
Старый 03.06.2012, 10:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

MyClientSocket должен принадлежать классу MyClass.
Примерно так:
Код:
   
 MyClass = class
   private
    MyClientSocket:TClientSocket;
    procedure ClientMessageRec (Sender: TObject; Socket: TCustomWinSocket);  
   public
    procedure Open(Port:Integer);
  end;
Код:
 procedure myclass.Open;
begin
MyClientSocket:= TclientSocket.Create(nil);
MyClientSocket.OnRead:= ClientMessageRec;
MyClientSocket.Port:= Port;
MyClientSocket.Open;
end;
Ну и делай массив таких объектов используя TObjectList
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2012, 09:41   #3
Denutrror
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 59
По умолчанию

Цитата:
Смысл ясен?
Да, теперь мне стало понятней, что нужно делать.
Спасибо, Stilet.
Сейчас попробую это реализовать. Думаю вопросов больше возникать не должно...
Denutrror вне форума Ответить с цитированием
Старый 04.06.2012, 09:59   #4
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

а отправить сообщение массиву серверов?
fezilk25 вне форума Ответить с цитированием
Старый 04.06.2012, 10:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну. В цикле по объектам пройтись и отправить. Каждый обьект содержит свой сокет, так что проблем не будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TServerSocket, TClientSocket. Создание сокета для передачи файлов. Denutrror Работа с сетью в Delphi 5 03.06.2012 11:08
Как передать файл используя TClientSocket & TServerSocket? Denutrror Работа с сетью в Delphi 1 04.04.2011 18:53
Вопрос TClientSocket D61C76h Работа с сетью в Delphi 6 19.02.2011 17:32
TServerSocket, TClientSocket prod87 Работа с сетью в Delphi 7 26.10.2009 22:38
Проблемма с TClientSocket SlashMan Работа с сетью в Delphi 6 14.07.2009 19:20