Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #8  
Старый 14.02.2013, 15:36
ispovedn1k ispovedn1k вне форума
Прохожий
 
Регистрация: 20.12.2012
Сообщения: 2
Репутация: 10
По умолчанию

Тебе совершенно верно написали про Syncronize. Доступ и работа с VLC-объектами должны
происходить только в родительском потоке. Именно для этого и нужен вызов Syncronize.

Как я понимаю, ты используешь класс TServerSocket. На сколько я знаю, это абстрактный
класс и его не рекоммендуют использовать напрямую. Лучше объявить дочерний, и пользоваться
им. В нем же (в дочернем) можно объявить обработчики событий, и привязать их прямо в конструкторе.
Пригодятся обработчики таких событий как OnGetSocket и OnRead

OnGetSocket возникает перед создаем клиент-серверного socket'a вида TServerClientWinSocket
Именно через него идет чтение и отправка данных. Именно он участвует во всех других
событиях, как уникальный идентификатор подключенного клиента.
Я предлагаю сделать обработчик этого события и создавать не просто TServerClientWinSocket,
а сначала обявить некий дочерний от него класс (например TServerClientWinSocket_x) и
создавать его. Что это даст? Например в дочерний класс, можно добавить переменную, которая
будет собирать тебе строки от клиентов, пока не настанет время их вывести.
Обработчик может выглядеть так:
Код:
TServerSocket_x.OnGetSocket(Sender: TObject; _Socket: TSocket;
				var ClientSocket: TServerClientWinSocket);
begin
	// при создании клиентского сокета создаем экземпляр СВОЕГО сокета.
	ClientSocket := TServerClientWinSocket_x.Create(_Socket, self.Socket);
end;


OnRead - ну тут все ясно. Возникает при необходисмости читать данные. И если ты решил меня
послушаться, и создал особый клиент-серверный объект сокета, то это решит твою проблему
со сбором строк. Просто складываешь их в переменную, пока не дойдешь до конца. А если
пришел указатель на конец данных, отправляй их на вывод через вызов Syncronize.

Как-то так.

Надеюсь, мои объяснения были понятны и помогли хоть как-то разобраться и составить план
действий.
Ответить с цитированием
 


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025