int tcp_connect(char *host, uint16_t port) { struct sockaddr_in serv_addr; struct hostent *server; /* Create the socket */ int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == -1) { nbdie("tcp: couldn't create socket"); } else { /* Look up the host */ server = gethostbyname(host); if(!server) { s = -1; fprintf(stderr, "Couldn't find host %s\n", host); } else { /* Set up the server address */ memset(&serv_addr, '\0', sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(port); memcpy(&serv_addr.sin_addr, server->h_addr_list[0], server->h_length); /* Connect */ if (connect(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { s = -1; nberror("tcp: couldn't connect to host"); } } } return s; }
void nbdie(char *str) { nberror(str); exit(EXIT_FAILURE); }