Показать сообщение отдельно
  #1  
Старый 18.01.2008, 22:48
Аватар для qip
qip qip вне форума
Прохожий
 
Регистрация: 18.01.2008
Сообщения: 4
Репутация: 10
По умолчанию Организация основного потока

В данный момент пишу чат клиент (основу для бота) для DC++ на основе DCD (2002 года)
Почти всё что касалось протокола довёл до ума, кроме огранизации основного потока.
Метод потока Execute выполняет парсинг накопившихся в буфере пакетов в цикле
Код:
repeat
...
until terminated;
а заполнение самого буфера происходит в методе сокета fSocket_OnRead
Код:
procedure TDCClientThread.fSocket_OnRead(Sender: TObject; Socket: TCustomWinSocket);
var tmp : string;
begin
 tmp := socket.receivetext;
 fbuffer := fbuffer + tmp;
end;
Поток создаётся при подключении к серверу, и уничтожается при отключении.

Так вот сутью проблемы является то, что данная конструкция потока, мягко говоря, нестабильна, т.к. при большом количестве пакетов не редко встречаются случаи их "перемешки", т.е. в тексте одного не до конца считанного пакета появляется текст другого.
Какие есть идеи реогранизации этой конструкции?

P.S. в качестве сокета TClientSocket
Ответить с цитированием