У меня в компьютере установлены две сетевые карты и требуется организовать подключение своего клиента к серверу, подключенному к одной из этих карт.
Правильно ли я делаю это таким образом:
- Код: Выделить всё
if idTCPClient1.Connected then begin
IdTCPClient1.Disconnect;
btnConnect.Caption:='Disconnected';
end
else begin
idTCPClient1.BoundIP:= edClient.Text; // 192.168.10.1 IP сетевой карты через которую работаем
IdTCPClient1.BoundPort:= StrToInt(edit2.Text); // 3344 порт через который работаем
IdTCPClient1.Host := edServer.Text; // 192.168.10.20 IP сервера, на который передаем команды
IdTCPClient1.Port := StrToInt(edit2.Text); // 3344 порт сервера
try
IdTCPClient1.Connect;
btnConnect.Caption:='Connected';
except
IdTCPClient1.Disconnect;
btnConnect.Caption:='Disconnected';
end;
end;
В принципе этот код работает, но возникла проблема - при первом подключении/ отключении все нормально, если сразу попытаться сделать это во второй раз, то выскакивает ошибка 10048 https://support.microsoft.com/ru-ru/kb/173619/ru. При наличии в ПК одной сетевой такой ошибки не возникало.
П.С. Подскажите, каким кодом перехватываются коды ошибок и выводятся "расшифрованные" сообщения об ошибках на экран при работе программы?
П.П.С, Внимательно перечитал статью, проблема решена - машинный перевод "Единственным выходом является использование определенного локального порта" ввел меня в заблуждение т. к. следовало читать "Единственным выходом является использование ОСОБОГО локального порта" т. е.
- Код: Выделить всё
IdTCPClient1.BoundPort := 0