![]() |
|
|
Регистрация | << Правила форума >> | 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? настолько банально?
— Засунь своё мнение в жопу! — Не могу: у меня там диплом филолога и мечты о прекрасном будущем. |