Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Необходимо разработать программу на Си из двух частей (клиент и сервер).
- Обмен между клиентом и сервером должен происходить с использованием сокетов ТСР.
- При этом на каждое обращение клиента сервер должен обрабатывать в отдельном процессе. */
- /* клиент должен передать серверу число, сервер должен передать клиенту сумму чисел,
- поступивших серверу, начиная от старта сервера */
- /* КЛИЕНТ */
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <netinet/in.h>
- #include <string.h>
- int main(int argc , char *argv[])
- {
- struct sockaddr_in name;
- unsigned int s = 0;
- int sd = socket(AF_INET , SOCK_STREAM , 0); // создание сокета
- if (sd == -1) // проверка подключения
- {
- printf("Error!\nCan't open socket\n");
- }
- name.sin_family=AF_INET;
- name.sin_port=htons(3000);
- name.sin_addr.s_addr=inet_addr("127.0.0.1");
- // Запрос связи с существующим программным гнездом со стороны процесса-клиента
- int d = connect( sd, (struct sockaddr_in *)&name, sizeof(name));
- if (d == -1) //
- {
- printf("Error!\nCan't open socket\n");
- }
- else
- {
- /* ПЕРЕДАЧА ЧИСЛА write()*/
- /* ПРИЁМ ЧИСЛА read()*/
- }
- close(sd);
- }
- /* СЕРВЕР */
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <netinet/in.h>
- #include <string.h>
- int main(int argc,char **argv )
- {
- int listener_d = socket(AF_INET, SOCK_STREAM, 0); // создание сокета
- if (listener_d==-1) // проверка подключения
- {
- puts("Error!\nCan't open socket\n");
- }
- struct sockaddr_in name;
- int c = bind(listener_d, (struct sockaddr*) &name, sizeof(name));
- if (c==-1)
- {
- puts("Error!\nCan't connect to socket\n");
- }
- /* Информирования о том, что процесс-сервер планирует установление
- виртуальных соединений через указанное гнездо */
- listen(listener_d, 10);
- while (1)
- {
- struct sockaddr_storage client_addr;
- unsigned int sum = 0; // сумма
- unsigned int s = 0; // входящее число
- int connect_d = accept(listener_d, (struct sockaddr *)&client_addr, &s);
- /* создание процесса, в котором читаются данные, выполняется действие, посылается ответ */
- }
- close(connect_d);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement