#include #include #include #include #define SOCKPATH "localsocket" void err_sys( const char * const ); int main() { struct sockaddr_un uaddr, caddr; int usock, res; char buffer[32] = ""; socklen_t len; memset( &uaddr, 0, sizeof(uaddr) ); uaddr.sun_family = AF_LOCAL; strcpy( uaddr.sun_path, SOCKPATH ); if( ( usock = socket( PF_LOCAL, SOCK_DGRAM, 0 ) ) == -1 ) err_sys( "socket()" ); printf( "User Datagram Socket %d\n", usock ); printf( "uaddr sockaddr_un has %d bytes\n", (len=SUN_LEN(&uaddr)) ); if( sendto( usock, "Hail", 4, 0, (struct sockaddr*)&uaddr, len ) == -1 ) err_sys( "sendto()" ); printf( "caddr sockaddr_un has %d bytes\n", (len=SUN_LEN(&caddr)) ); if( recvfrom( usock, buffer, sizeof(buffer), 0, (struct sockaddr*)&caddr, &len ) == -1 ) err_sys( "recvfrom()" ); printf( "Received %d bytes\n", res ); printf( "Buffer now is \"%s\"\n", buffer ); } void err_sys( const char * const mesg ) { perror( mesg ); exit( -1 ); }