![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
компонент TServerSocket, отправка сообщений клиенту.
Данный код отправляет текст всем присоединенным клиентам Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
S: String;
I: Integer;
begin
//Добавляем к сообщению в строке индетификатор его сокета
S:='['+TimeToStr(Time)+']'+InTtoStr(Socket.SocketHandle)+'>'+Socket.ReceiveText;
Memo1.Lines.Add(S); //Добавляем сообщение в список
//перебираем все установленные соединения
For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
//Проверяем - если индетификатор очередного сокета не совпадает с приславшим сообщение, то...
if ServerSocket1.Socket.Connections[i].SocketHandle <> Socket.SocketHandle then
//..посылаем очередной клиентской программе сообщения
ServerSocket1.Socket.Connections[i].SendText(S);
end;Теперь вопрос - а как установить обмен данными с определенным клиентом? Имеется ввиду не просто текст сообщения. К примеру клиент присылает на сервер комманду $connect, и тот именнот ему в свою очередь присылает $try, когда подключено к примеру с 10 клиентов. На примере если можно |
|
#2
|
||||
|
||||
|
1. банально:
Код:
if Socket.ReceiveText='$connect' then Socket.SendText('$try');2. использовать TServerClientThread 3. самому мультиплексировать клиентов (Socket.Data) |
|
#3
|
||||
|
||||
|
то есть тот же самый код только в TServerClientThread? настолько банально?
|