TCP соединение с двумя сетевыми картами в ПК

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TCP соединение с двумя сетевыми картами в ПК

Сообщение Nikolas » 29.05.2015 14:41:13

Здравствуйте.
У меня в компьютере установлены две сетевые карты и требуется организовать подключение своего клиента к серверу, подключенному к одной из этих карт.
Правильно ли я делаю это таким образом:

Код: Выделить всё
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
.
Nikolas
новенький
 
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37

Re: TCP соединение с двумя сетевыми картами в ПК

Сообщение Pavia » 29.05.2015 15:20:34

Вам надо два IdTCPClient и не надо трогать локальные порты.

Nikolas писал(а):П.С. Подскажите, каким кодом перехватываются коды ошибок и выводятся "расшифрованные" сообщения об ошибках на экран при работе программы?

try except
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: TCP соединение с двумя сетевыми картами в ПК

Сообщение Nikolas » 29.05.2015 15:30:39

Два клиента? Зачем? А как я узнаю через какую сетевую какой из них будет работать?
Nikolas
новенький
 
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37

Re: TCP соединение с двумя сетевыми картами в ПК

Сообщение Pavia » 29.05.2015 15:56:17

Nikolas писал(а):А как я узнаю через какую сетевую какой из них будет работать?

А зачем узнавать?
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: TCP соединение с двумя сетевыми картами в ПК

Сообщение pda » 29.05.2015 18:32:05

Nikolas писал(а):т. к. следовало читать "Единственным выходом является использование ОСОБОГО локального порта" т. е.

Это не особый порт. Это указание операционной системе выбрать свободный локальный порт. Так и должно быть, для привязки к интерфейсу задаётся только его адрес. Порт для клиентского соединения надо задавать только в очень особенных случаях, типа прохождения через NAT.

P.S. Зачем вы вообще пытаетесь указать программе через какую карту ей работать? Это точно необходимо? В нормальных условиях эти вопросы целиком ложатся на операционную систему и её настройки маршрутизации.
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: TCP соединение с двумя сетевыми картами в ПК

Сообщение Nikolas » 29.05.2015 20:41:03

Да, действительно все работает и так. Просто сначала клиент не хотел подключаться к серверу, но как выяснилось это была ошибка на той стороне.
Nikolas
новенький
 
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 217

Рейтинг@Mail.ru