#include "helpers.h" int create_socket(uint16_t port) { int sock; struct sockaddr_in socket_name; // Creates the socket sock = socket (PF_INET, SOCK_STREAM, 0); //TODO: check if PF_INET is the right one if (sock < 0) { perror("Couldn't create the socket."); exit(EXIT_FAILURE); } // Gives the socket a name socket_name.sin_family = AF_INET; socket_name.sin_port = htons(port); socket_name.sin_addr.s_addr = htonl(INADDR_ANY); // Binds own address structure to socket if (bind(sock, (struct sockaddr *) &socket_name, sizeof(socket_name)) < 0) { perror("Couldn't bind the address structure to the socket."); exit(EXIT_FAILURE); } return sock; } int read_from_client(int file_des, uint16_t max_line) { char buffer[max_line]; int nbytes; nbytes = read(file_des, buffer, sizeof(buffer)); if (nbytes < 0) { perror("Couldn't read from client."); exit(EXIT_FAILURE); } else if (nbytes == 0) // End-of-file return -1; else { fprintf(stderr, "Server: got message: `%s'\n", buffer); return 0; } } void init_sockaddr(struct sockaddr_in *name, const char *hostname, uint16_t port) { struct hostent *hostinfo; name->sin_family = AF_INET; name->sin_port = htons(port); hostinfo = gethostbyname(hostname); if (hostinfo == NULL) { fprintf(stderr, "Unknown host %s.\n", hostname); exit(EXIT_FAILURE); } name->sin_addr = *(struct in_addr *) hostinfo->h_addr_list[0]; }