на КЛИЕНТЕ описываем процедуру Send отправки сообщения Sender - тот, кто отправляет (например номер пользователя), Message - само сообщение
procedure Send(Sender : integer; Message : string);
begin
//отправка данных серверу
//например строка в таком формате:
//"From=" + IntToStr(Sender) + "#Mes=" + Message;
end;
на СЕРВЕРЕ описываем процедуру Send отправки сообщения Receiver - тот, кто получет сообщение(например номер пользователя), Message - само сообщение
procedure Send(Receiver : integer; Message : string);
begin
//отправка данных клиенту
//например строка в таком формате:
//"To=" + IntToStr(Receiver) + "#Mes=" + Message;
end;
на СЕРВЕРЕ описываем функцию Accept получения сообщения Source и его обработки.
она возврашает само сообщение и в аргумент From - номер пользователя-отправителя
function Accept(Source : string; var From : integer) : string;
begin
//получение текста сообщения и запись его в Source например из Socket.
From := copy(Source, 6, pos('#', Source) - 6);
delete(Source, 1, pos('#', Source) + 4); //+4 - нужно игнорировать "Mes=" и символ "#" - разделитель и всё что до него
Result := Source;
end;
на КЛИЕНТЕ
процедура, которая выполняется сразу после входа в чат (или что у Вас там?)
UserId - идентификационный номер пользователя:
procedure Init(UserId : integer);
begin
Send(UserId, "loggedIn"); //процедура осведомляет сервер, чот пользователь он-лайн
end;
процедура обработки полученного сообщения на СЕРВЕРЕ
procedure ProcessRequest(From : integer; Message : string);
begin
if (Message = "loggedIn") then begin
//сканирование папки с временными файлами - сообщениями для пользователя From. **n** - количество сообщений. запись сообщений в массив messages
for i := 1 to n do begin
Send(From, messages[i]);
end;
end else
.... //другие случаи отправленных сообщений
end;
ну а КЛИЕНТ получает сообщения от сервера как обычно (ничего модифицировать не надо).