#include "header.h" int main(int argc, char **argv) { int socketfd; struct sockaddr_in server; char *basename = basename_ex(argv[0]), *str_quit = "QUIT"; char send_buffer[LINESIZ], receive_buffer[LINESIZ]; if (argc != 2) err_fatal("Usage: %s \n", basename); memset((char *)&server, 0, sizeof(struct sockaddr_in)); server.sin_family = AF_INET; server.sin_port = htons(9191); socketfd = socket_ex(AF_INET, SOCK_STREAM, IPPROTO_TCP); inet_pton_ex(AF_INET, argv[1], &server.sin_addr); connect_ex(socketfd, (struct sockaddr *)&server, sizeof(server)); /* process input and server response */ while (fgets_ex(send_buffer, LINESIZ, stdin) != NULL) { int quit_sent = FALSE; if (strstr(send_buffer, str_quit) != NULL) quit_sent = TRUE; write_ex(socketfd, send_buffer, strlen(send_buffer)); if (quit_sent) { close(socketfd); exit(0); } if (readline_ex(socketfd, receive_buffer, LINESIZ) == 0) err_fatal("readline_ex() failed.\n"); fputs_ex(receive_buffer, stdout); } close(socketfd); }