ScktComp. Error 10049. Состояние сокета

OxY63rus
Дата: 16.10.2019 13:35:35
Привет.
На форму кидаю TClientSocket, TServerClient и три кнопки:
1. Запускает сервер
2. Подключает к серверу с заведомо несуществующим именем
3. Подключает к серверу с заведомо существующим именем (как по IP так и по hostname)

При подключении к серверу с заведомо несуществующим именем вылетает исключение 11001 (Этот хост неизвестен).

Теперь если подключаться к серверу с заведомо существующим именем вылетает исключение 10049 (Требуемый адрес для своего контекста неверен). В этот момент
ClientSocket1.Socket.SocketHandle = -1
ClientSocket1.Socket.LookupState = lsLookupAddress

Если сейчас опять подключаться к серверу с заведомо существующим именем, то подключение устанавливается и
ClientSocket1.Socket.SocketHandle <> -1
ClientSocket1.Socket.LookupState = lsIdle


Подскажите, пожалуйста, как обработать ошибку 11001, чтобы последующее подключение к серверу с существующим именем происходило с первого раза

Код:
procedure TForm1.StartServerClick(Sender: TObject);
begin
  ServerSocket1.Port:=8888;
  ServerSocket1.Active:=true;
end;


procedure TForm1.CoonectToNonExistingClick(Sender: TObject);
begin
  ClientSocket1.Host:='notexisting';
  ClientSocket1.Port:=8888;
  ClientSocket1.Active:=true;
end;

procedure TForm1.ConectToExistsClick(Sender: TObject);
begin
  ClientSocket1.Host:='localhost';
  ClientSocket1.Port:=8888;
  ClientSocket1.Active:=true;
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  ShowMessage(inttostr(ErrorCode));
  ErrorCode:=0;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Showmessage('Connected');
end;
alekcvp
Дата: 16.10.2019 19:20:43
OxY63rus,

Помнится там кроме свойства Host есть свойство Address - оно после первого подключения не заполняется, случайно?
И что будет если ему перед подключением принудительно присваивать '' (пустую строку)?
OxY63rus
Дата: 16.10.2019 19:53:49
alekcvp, Address не заполняется. При всех ошибках
length(ClientSocket1.Address) = 0