Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #define DIE(assertion, msg) \
- if (assertion ) { perror(msg); exit(EXIT_FAILURE); }
- int main()
- {
- struct sockaddr_in addr, raddr;
- int optval = 1, rc, fd, peerfd;
- unsigned rlen = sizeof(raddr);
- char send_buffer[] = "Mumu mimi meme mama";
- char recv_buffer[100];
- fd = socket(AF_INET, SOCK_STREAM, 0);
- DIE(fd < 0, "socket");
- rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
- DIE (rc < 0, "setsockopt");
- addr.sin_family = AF_INET;
- addr.sin_port = htons(8888);
- addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- rc = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
- DIE(rc < 0, "bind");
- rc = listen(fd, 5);
- DIE(rc < 0, "listen");
- printf("[SERVER] Now wait for a client...\n");
- peerfd = accept(fd, (struct sockaddr *)&raddr, &rlen);
- DIE(peerfd < 0, "accept");
- printf("[SERVER] Client connected. Read something..\n");
- rc = recv(peerfd, recv_buffer, sizeof(recv_buffer) - 1, 0);
- DIE(rc < 0, "recv");
- recv_buffer[rc] = 0;
- printf("[SERVER] Received %s. Now sleep 20s\n", recv_buffer);
- sleep(20);
- rc = send(peerfd, send_buffer, sizeof(send_buffer), 0);
- DIE(rc < 0, "send");
- printf("[SERVER] send returned %d\n", rc);
- return close(fd);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement