Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <string.h>
- #include <fcntl.h>
- #include <unistd.h>
- enum { BACKLOG = 5 };
- int main(int argc, char **argv)
- {
- int sockfd;
- if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
- return 0;
- }
- unsigned portnm;
- sscanf(argv[1], "%u", &portnm);
- int val = 1;
- setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof val);
- struct sockaddr_in own_addr;
- own_addr.sin_family = AF_INET;
- own_addr.sin_addr.s_addr = INADDR_ANY;
- own_addr.sin_port = htons(portnm);
- if (bind(sockfd, (struct sockaddr *) &own_addr, sizeof own_addr) < 0) {
- return 0;
- }
- if (listen(sockfd, BACKLOG) < 0) {
- return 0;
- }
- int32_t temp = 0, summ = 0;
- do {
- struct sockaddr_in prt_adr;
- socklen_t party_len = sizeof prt_adr;
- int newsockfd;
- if ((newsockfd = accept(sockfd, (struct sockaddr*)&prt_adr, &party_len)) < 0) {
- return 0;
- }
- int32_t num;
- while (read(newsockfd, &num, sizeof num) > 0) {
- num = ntohl(num);
- summ += num;
- temp = num;
- if (!num) {
- break;
- }
- }
- } while (temp != 0);
- printf("%d\n", summ);
- shutdown(sockfd, SHUT_RDWR);
- close(sockfd);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement