#include #include #include #include #include #include #include int main(int argc, char *argv[]) { int sockfd, newsockfd, portnum, addr_len; char buffer[512]; struct sockaddr_in server_addr, client_addr; int n; if (argc < 2) { fprintf(stderr, "ERROR: No port provided\n"); exit(1); } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { fprintf(stderr, "ERROR opening socket\n"); exit(1); } portnum = atoi(argv[1]); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(portnum); n = bind(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)); if (n<0) { fprintf(stderr, "ERROR on binding\n"); exit(1); } listen(sockfd, 5); addr_len = sizeof(client_addr); newsockfd = accept(sockfd, (struct sockaddr *) &client_addr, &addr_len); if (newsockfd < 0) { fprintf(stderr, "ERROR on accept\n"); exit(1); } bzero(buffer, 512); n = read(newsockfd, buffer, 511); if (n < 0) { fprintf(stderr, "ERROR reading from socket\n"); exit(1); } fprintf(stdout, "Here is the message: %s\nIt is on port %d\n", buffer, portnum); n = write(newsockfd, "I got your message. It was a very nice message.\n", 19); if (n < 0) { fprintf(stderr, "ERROR writing to socket\n"); exit(1); } return 0; }