2010-03-02 2 views
8

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

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

ответ

13

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

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

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