Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Server*/
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <netinet/in.h>
- #include <string.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <netdb.h>
- #include <errno.h>
- #include <arpa/inet.h>
- void error(char *msg)
- {
- perror(msg); // идентификация ошибки с выводом сообщения
- exit(0);
- }
- int main(int argc,char **argv )
- {
- int listener_d = socket(AF_INET, SOCK_STREAM, 0); // создание сокета
- if (listener_d < 0) // проверка подключения
- {
- error("Error: can't open socket\n");
- }
- struct sockaddr_in name;
- name.sin_family=AF_INET;
- name.sin_port=htons(3000);
- name.sin_addr.s_addr=inet_addr("127.0.0.1");
- int c = bind(listener_d, (struct sockaddr*) &name, sizeof(name));
- if (c < 0)
- {
- error("Error: can't connect to socket\n");
- }
- /* Информирования о том, что процесс-сервер планирует установление
- виртуальных соединений через указанное гнездо */
- listen(listener_d, 10);
- while (1)
- {
- struct sockaddr_storage client_addr;
- int s = 0; // сумма
- int connect_d = accept(listener_d, (struct sockaddr *)&client_addr, &s);
- if (connect_d < 0)
- {
- error("Error on accept");
- }
- char buf[1024];
- int sum = 0;
- int pid, n;
- pid=fork();
- if (pid == 0)
- {
- int n = read(connect_d, buf, sizeof(buf));
- if (n < 0)
- {
- error("Error reading from socket");
- }
- int buf1 = atoi(buf);
- sum += buf1;
- n = write(connect_d, &sum, sizeof(sum));
- if (n < 0)
- {
- error("Error writing to socket");
- }
- }
- }
- close(listener_d);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement