Читаем О чём не пишут в книгах по Delphi полностью

   'Ошибка при ожидании подключения клиента: ' + GetErrorString);

// При выводе сообщения не забываем,

 // что номер порта имеет сетевой формат

 WriteLn(OemString(' Зафиксировано подключение с адреса '),

  Ord(ClientSockAddr.sin_addr.S_un_b.s_b1), '.',

  Ord(ClientSockAddr.sin_addr.S_un_b.s_b2), '.',

  Ord(ClientSockAddr.sin_addr.S_un_b.s_b3), '.',

  Ord(ClientSockAddr.sin_addr.S_un_b.s_b4), ':',

  ntohs(ClientSockAddr.sin_port));

 // Цикл общения с клиентом. Продолжается до тех пор,

 // пока клиент не закроет соединение или пока

 // не возникнет ошибка

 repeat

  // Читаем длину присланной клиентом строки и помещаем ее в StrLen

  case ReadFromSocket(ClientSocket, StrLen, SizeOf(StrLen)) of

  0: begin

   WriteLn(OemString('Клиент закрыл соединение');

   Break;

  end;

  -1: begin

   WriteLn(OemString('Ошибка при получении данных от клиента: ',

    GetErrorString));

   Break;

  end;

  end;

  // Протокол не допускает строк нулевой длины

  if StrLen <= 0 then

  begin

   WriteLn(OemString('Неверная длина строки от клиента: '), StrLen);

   Break;

  end;

  // Установка длины строки в соответствии с полученным значением

  SetLength(Str, StrLen);

  // Чтение строки нужной длины

  case ReadFromSocket(ClientSocket, Str[1], StrLen) of

  0: begin

   WriteLn(OemString('Клиент закрыл соединение'));

   Break;

  end;

  -1: begin

   WriteLn(OemString( 'Ошибка при получении данных от клиента: ' +

    GetErrorString));

   Break;

  end;

  end;

  WriteLn(OemString('Получена строка: ' + Str));

  // Преобразование строки

  Str :=

   AnsiUpperCase(StringReplace(Str, #0, '#0', [rfReplaceAll])) +

    ' (Simplest server)';

  // Отправка строки. Отправляется на один байт больше, чем

  // длина строки, чтобы завершающий символ #0 тоже попал в пакет

  if send(ClientSocket, Str[1], Length(Str) + 1, 0) < 0 then

  begin

   WriteLn(OemString('Ошибка при отправке данных клиенту: ' +

    GetErrorString));

   Break;

  end;

  WriteLn(OemString('Клиенту отправлен ответ: ' + Str));

  // Завершение цикла обмена с клиентом

 until False;

 // Сокет для связи с клиентом больше не нужен

 closesocket(ClientSocket);

until False;

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже