#include #include #include #include #include #include #include #include "shell.h" #define PORT 9000 #define BUF_SIZE 256 static inline void die(const char *msg) { perror(msg); exit(-1); } int main() { struct sockaddr_in srv_addr, cli_addr; int sockopt = 1; socklen_t sad_sz = sizeof(struct sockaddr_in); int sfd, cfd; /*ssize_t bytes; char in_buf[BUF_SIZE]; char out_buf[BUF_SIZE];*/ srv_addr.sin_family = AF_INET; srv_addr.sin_port = htons(PORT); srv_addr.sin_addr.s_addr = INADDR_ANY; if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) die("Could not open socket"); setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *) &sockopt, sizeof(sockopt)); if (bind(sfd, (struct sockaddr *) &srv_addr, sad_sz) < 0) die("Could not bind socket"); if (listen(sfd, 1) < 0) die("Could not listen on socket"); cfd = accept(sfd, (struct sockaddr *) &cli_addr, &sad_sz); if (cfd < 0) die("Could not accept incoming connection"); printf("srv: connected: %s\n", inet_ntoa(cli_addr.sin_addr)); int status = shell(cfd); close(cfd); close(sfd); return status; }