Получить клиентский порт (в C) после звонка для подключения - PullRequest
8 голосов
/ 02 марта 2010

Я просматриваю некоторый исходный код, который подключается к удаленному хосту через порт P (используя TCP). После вызова для подключения (при условии успешного завершения) я хотел бы обнаружить клиентский порт соединения (т.е. клиентский порт). По правде говоря, я просматриваю исходный код openssh, в sshconnect.c есть функция ssh_connect, которая вызывает timeout_connect. У меня есть ip, порт, локальный ip удаленного хоста, но я хотел бы знать локальный (клиентский) порт после успешного подключения.

Надеюсь, я был ясен и спасибо за ваши ответы С уважением Sapsi

1 Ответ

14 голосов
/ 02 марта 2010

Попробуйте передать дескриптор файла клиентского сокета на getsockname, что-то вроде этого

struct sockaddr_in local_address;
int addr_size = sizeof(local_address);
getsockname(fd, &local_address, &addr_size);

Затем вы можете выбрать структуру адресов для IP-адреса и порта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...