#include #include #include #include main() { int child_sock; int sock; struct sockaddr_in addr; int rc; int proc; sock = socket(PF_INET, SOCK_STREAM, 0); printf("socket() -> %d(%d)\n", sock, errno); addr.sin_family = AF_INET; addr.sin_port = htons(12345); addr.sin_addr.s_addr = inet_addr("10.0.1.1"); rc = bind(sock, (struct sockaddr *)&addr, sizeof(addr)); printf("bind() -> %d(%d)\n", rc, errno); rc = listen(sock, 1); printf("listen() -> %d(%d)\n", rc, errno); sleep(1); rc = shutdown(sock, SHUT_RD); printf("shutdown() -> %d(%d)\n", rc, errno); proc = fork(); if (proc) { child_sock = socket(PF_INET, SOCK_STREAM, 0); printf("Child: socket() -> %d(%d)\n", child_sock, errno); rc = connect(child_sock, (struct sockaddr *)&addr, sizeof(addr)); printf("connect() -> %d(%d)\n", rc, errno); } else { printf("Waiting...\n");getchar(); } return 0; }