¿Alguien conoce el código fuente de la función getpeername?
#include
#include
#include
#include
#include
#include
r= ioctl(socket, NWIOGTCPCONF, &tcpconf);
if (r != -1 || errno != ENOTTY)
{
if (r == -1)
{
/* Descriptor de archivo incorrecto*/
return -1;
}
return _tcp_getpeername(socket, dirección, dirección_len,
&tcpconf);
}
#if DEBUG p>
fprintf(stderr, "getpeername: no implementado para fd %d\n", socket);
#endif
errno= ENOSYS;
return -1;
}
static int _tcp_getpeername(int socket, struct sockaddr *_RESTRICT dirección,
socklen_t *_RESTRICT dirección_len, nwio_tcpconf_t *tcpconfp) p>
{
socklen_t len;
struct sockaddr_in sin
if (tcpconfp->nwtc_remaddr == 0 ||
tcpconfp->nwtc_remport == 0)
{
errno= ENOTCONN;
Retorno -1;
}
memset(&sin, '\0', sizeof(sin));
sin.sin_family= AFF.sin_family= AFF.sin_family= AFF.sin_family= AFF.sin_family= AFF. sinsin_family= AF_INET;
sin.sin_addr.s_addr=tcpconfp->nwtc_remaddr;
sin .sin_port= tcpconfp->nwtc_remport;
len= * dirección_len;
if (len > tamaño de (sin))
len= tamaño de (sin);
memcpy( dirección, &sin, len);
p>*address_len= len;
devuelve 0;
}