В данный момент пишу чат клиент (основу для бота) для 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