2010-03-02 17 views
8

Estoy navegando por algún código fuente que se conecta a un host remoto en el puerto P (usando TCP). Después de la llamada para conectar, (asumiendo que fue exitoso), me gustaría descubrir el puerto cliente de la conexión (es decir, el puerto del cliente). En verdad, estoy navegando por la fuente openssh, en sshconnect.c, hay una función ssh_connect que llama a timeout_connect. Tengo el host remoto ip, puerto, ip local, pero me gustaría saber el puerto local (cliente) después de una conexión exitosa.Obtener el puerto del cliente (en C) después de una llamada para conectar

espero haber sido claro y gracias por sus respuestas Regards SAPsi

Respuesta

13

Trate de alimentar el descriptor de archivo de socket de cliente a getsockname, algo así como lo que

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

A continuación, puede machacar a la estructura de direcciones para el IP y el puerto.

Cuestiones relacionadas