Hola.
Por tu pregunta deduzco que tienes el código de un servidor y que, cuando aceptas una conexión, quieres saber desde qué dirección IP viene y qué puerto.
Si te fijas, la sintaxis de
accept (para aceptar conexiones entrantes por TCP) es:
int accept(int s, struct sockaddr *sa, int *addrlen);
Para aceptar una conexión se haría así:
struct sockaddr_in sa;
int size_sa = sizeof(sa);
int cliente = accept(mi_socket_tcp, (struct sockaddr *) &sa, &size_sa);
Después de esto, en
cliente tendrías el descriptor de la conexión que acabas de hacer y en
sa tendrías la dirección IP y el puerto de donde proviene.
Para obtener los valores del struct, que estarán en el formato de la red, se hace así:
// Retorna la dirección IP en formato de cadena
char *inet_ntoa(sa.sin_addr);
// Retorna el puerto con los bytes bien ordenados
unsigned short ntohs(sa.sin_port);
Espero que te haya servido de ayuda.
Un saludo.
Ruben3d