#include // inet_addr() #include #include #include #include #include // bzero() #include #include // read(), write(), close() #include #include #include "config.h" void unescape(char *buffer, size_t buf_len) { int i; bool last_is_escape = false; for (i = 0; i < buf_len; i++) { if (last_is_escape) { switch (buffer[i]) { case 'n': buffer[i - 1] = ' '; buffer[i] = '\n'; } } if (buffer[i] == '\\') { last_is_escape = true; } else { last_is_escape = false; } } } int main() { int sockfd, connfd; struct sockaddr_in servaddr4, cli; unsigned int servaddrlength; // socket create and verification sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { printf("socket creation failed...\n"); exit(1); } // assign IP, PORT servaddr4.sin_family = AF_INET; servaddr4.sin_addr.s_addr = inet_addr("45.81.62.108"); servaddr4.sin_port = htons(DEFAULT_LISTEN_PORT); int status = connect(sockfd, (struct sockaddr *)&servaddr4, sizeof servaddr4); // connect the client socket to server socket if (status != 0) { printf("%i\n", errno); printf("connection with the server failed...\n"); exit(0); } struct sockaddr *servaddr = (struct sockaddr *)&servaddr4; unsigned int ss = sizeof servaddr; // function for chat char clientMessage[MESSAGE_STRING_LENGTH] = {0}; recvfrom(sockfd, clientMessage, MESSAGE_STRING_LENGTH, 0, servaddr, &ss); unescape(clientMessage, (size_t)MESSAGE_STRING_LENGTH); puts(clientMessage); // close the socket close(sockfd); }