#include #include #include #include #include #include /* Internet domain header */ #include /* only needed on my mac */ int main() { // create socket int listen_soc = socket(AF_INET, SOCK_STREAM, 0); if (listen_soc == -1) { perror("server: socket"); exit(1); } //initialize server address struct sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(54321); memset(&server.sin_zero, 0, 8); server.sin_addr.s_addr = INADDR_ANY; // bind socket to an address if (bind(listen_soc, (struct sockaddr *) &server, sizeof(struct sockaddr_in)) == -1) { perror("server: bind"); close(listen_soc); exit(1); } // Set up a queue in the kernel to hold pending connections. if (listen(listen_soc, 5) < 0) { // listen failed perror("listen"); exit(1); } struct sockaddr_in client_addr; unsigned int client_len = sizeof(struct sockaddr_in); client_addr.sin_family = AF_INET; int client_socket = accept(listen_soc, (struct sockaddr *)&client_addr, &client_len); if (client_socket == -1) { perror("accept"); return -1; } write(client_socket, "hello\r\n", 7); char line[10]; read(client_socket, line, 10); /* before we can use line in a printf statement, ensure it is a string */ line[9] = '\0'; printf("I read %s\n", line); return 0; }