/* a client in the unix domain */ #include #include #include #include int main(int argc, char *argv[]) { int conn; struct sockaddr_un serv_addr; char buffer[4]; int len; while( 1 ) { bzero((char *)&serv_addr,sizeof(serv_addr)); serv_addr.sun_family = AF_UNIX; strcpy(serv_addr.sun_path, "/tmp/ugh"); conn = socket(AF_UNIX, SOCK_STREAM,0); if( conn < 0 ) { perror( "couldn't create socket" ); return -1; } if( connect( conn, (struct sockaddr *)&serv_addr, strlen(serv_addr.sun_path) + sizeof(serv_addr.sun_family) ) < 0 ) { perror( "couldn't connect" ); return -1; } bzero(buffer, 4); len = recv(conn,buffer,3,MSG_WAITALL); if( len != 3 ) { perror( "eh?" ); printf( "HUH: %d\n", len ); len = recv(conn,buffer,3,MSG_WAITALL); if( len == 3 ) { printf( "WTF: %d, %s\n", len, buffer ); } return -1; } else { printf( "%s\n", buffer ); } shutdown(conn,2); close(conn); } return 0; }