Sponsored Content
Full Discussion: getsockname
Top Forums Programming getsockname Post 86118 by jim mcnamara on Tuesday 11th of October 2005 09:44:25 AM
Old 10-11-2005
I'm not sure what you want.

My guess is:
getsockname returns the IP address of where the socket lives, i.e., the host it's connected to, in this case localhost. ie., the LOCAL address of the socket.

I'm guessing you want something else. mac address?

Code:
/*
 * gethwaddr.c
 *
 * Demonstrates retrieving hardware address of adapter using ioctl()
 *

 *
 */
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>
/* linux only */

int main( int argc, char *argv[] )
{
        int s;
        struct ifreq buffer;

        s = socket(PF_INET, SOCK_DGRAM, 0);

        memset(&buffer, 0x00, sizeof(buffer));

        strcpy(buffer.ifr_name, "eth0");

        ioctl(s, SIOCGIFHWADDR, &buffer);

        close(s);

        for( s = 0; s < 6; s++ )
        {
                printf("%.2X ", (unsigned char)buffer.ifr_hwaddr.sa_data[s]);
        }

        printf("\n");

        return 0;
}

 
GETPEERNAME(2)						      BSD System Calls Manual						    GETPEERNAME(2)

NAME
getpeername -- get address of connected peer SYNOPSIS
#include <sys/socket.h> int getpeername(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len); DESCRIPTION
The getpeername() function returns the address of the peer connected to the specified socket. The address_len parameter should be initialized to indicate the amount of space pointed to by address. On return it contains the actual size of the address returned (in bytes). The address is truncated if the buffer provided is too small. RETURN VALUES
The getpeername() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error. ERRORS
The call succeeds unless: [EBADF] The argument socket is not a valid descriptor. [EFAULT] The address parameter points to memory not in a valid part of the process address space. [EINVAL] socket has been shut down. [ENOBUFS] Insufficient resources were available in the system to perform the operation. [ENOTCONN] Either the socket is not connected or it has not had the peer pre-specified. [ENOTSOCK] The argument socket refers to something other than a socket (e.g., a file). [EOPNOTSUPP] getpeername() is not supported for the protocol in use by socket. SEE ALSO
accept(2), bind(2), getsockname(2), socket(2) HISTORY
The getpeername() function call appeared in 4.2BSD. 4.2 Berkeley Distribution June 4, 1993 4.2 Berkeley Distribution
All times are GMT -4. The time now is 11:13 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy