«Socket . ReceiveText» – хранящий принятые с клиента данные.
Методы ServerSocket1:
Socket . Connections[i] . SendText – отправка на i-й клиент текста;
Open – активизация сервера (открытие сервера);
Close – деактивизация сервера (закрытие сервера).
(!) Каждый сокет имеет свойство «Socket . SocketHandle» – уникальный дескриптор данного сокета, используемый для идентификации клиента (в обработчике события «OnClientRead».
procedure TForm2.Button1Click(Sender: TObject);
{ Определяем порт и запускаем сервер }
begin
ServerSocket1.Close; ServerSocket1.Port := StrToInt(Edit1.Text); ServerSocket1.Open;
end;
procedure TForm2.Button2Click(Sender: TObject);
{ Останавливаем сервер }
begin
ServerSocket1.Close; ListBox1.Items.Text:='Server is stop.';
end;
procedure TForm2.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
{ Произошла ошибка связи с клиентом }
begin
MessageDlg('Нет связи с клиентом', mtError,[mbOk], 0);
end;
procedure TForm2.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
{ Получение данного с клиента }
begin
Listbox1.Items.Text:=Socket.ReceiveText;
end;
procedure TForm2.Button3Click(Sender: TObject);
{ Отправка данных на клиент }
label 1;
begin
with ServerSocket1.Socket do begin
if ActiveConnections=0 then goto 1;
if Connections[0].SendText(Memo1.Lines.text)=0 then
1: MessageDlg('Не могу отправить данные на клиент',
mtError,[mbOk], 0) else showmessage('Ok!');
end;
end;
procedure TForm2.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
{ Запрет доступа "вторым" клиентам }
begin
if ServerSocket1.Socket.ActiveConnections>1 then abort;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
{ Остановка сервера }
begin
ServerSocket1.Close;
end;