sockaddr_in mkaddr(char *hostname, int port) { unsigned int addr = inet_addr(hostname); struct hostent *host; struct sockaddr_in sockaddr; if ((host = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET)) != NULL) { /* Resolved as address */ } if (host == NULL) { if ((host = gethostbyname(hostname)) == NULL) { /* Could not resolve at all */ return sockaddr; } else { /* Resolved as hostname */ } } sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(port); memcpy(&sockaddr.sin_addr.s_addr, host->h_addr, host->h_length); return sockaddr; }