0 / 0 / 0
Регистрация: 09.11.2018
Сообщений: 5

Клиент-сервер TCP для Linux с fork

04.12.2018, 11:19. Показов 9889. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать клиент серверную программу TCP для Linux с fork. Демонстрация должна быть такая: к серверу подключается несколько клиентов и каждый клиент должен передавать сообщения 1(1 клиент передает 1 с задержкой в 1 секунду), 2(2 клиент передает 2 с задержкой в 2 секунды), 3(3 клиент передает 3 с задержкой в 3 секунды) например: сервер получает 11211311231 и тд)
суть задания :
1. Написать программу (на языке C/C++, консольное приложение) обеспечивающую параллельную работу севера, принимающего файлы от клиента по сети. Условие: мультипроцессная организация на основе функции fork, транспортный протокол – TCP.
2. Обеспечить в сервере завершение «зомби-процессов».
3. Написать клиентскую программу, передающую файл по сети серверу.
4. Продемонстрировать реализованные возможности программ согласно заданию. Серверная программа должна находить номер свободного порта и выводить его на экран (см., например, [1], стр. 338-342: функции bind, getsockname). При запуске клиентской программы задавать со строки IP адрес сервера и порт.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2018, 11:19
Ответы с готовыми решениями:

TCP-сервер и TCP-клиент. Клиент не находит файл.
Всем привет! Решил изучать передачу данных по сети и начал с освоения примера, приведённого в книге "Visual C# 2008. Базовый курс...

Если сервер TCP то и клиент тоже должен быть TCP?
Я полный новичок И я так понимаю есть TCP client (Sockets), TCP server (Sockets), и ClientSocket (ScktComp), ServerSocket (ScktComp) ...

как создать TCP клиент, TCP сервер ? На С++
Очень нужна помощь!Как написать TCP клиент, TCP сервер. Например,клиент вводит строку с клавиатуры и отсылает ее серверу.только перед...

2
112 / 91 / 31
Регистрация: 24.10.2018
Сообщений: 336
04.12.2018, 11:23
Задание понятно. Что уже сделано и что конкретно не получается?
0
0 / 0 / 0
Регистрация: 09.11.2018
Сообщений: 5
07.12.2018, 06:55  [ТС]
уже сделан клиент и сервер tcp, добавлена функция fork, осталось довести до ума демонстрацию , что бы каждый клиент непрерывно цикличиски отправлял одно и то же сообщение с разной задержкой(что бы была видна параллельная работа сервера с несколькими клиентами)
вот клиент
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <errno.h>
 
char msg1[] = "Hello there!\n";
char msg2[] = "Bye bye!\n";
char msg3[] = "Its me again!\n";
 
int main(int argc, char *argv[])
{
    int sock;
    struct sockaddr_in addr;
    void sigalarm(int);
    char buf[1024]; 
    if(argc!=3) {
        printf("Вы забыли указать адрес и порт.\n");
        exit(1);
    }
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0)
    {
        perror("socket");
        exit(1);
    }
    addr.sin_family = AF_INET;
    addr.sin_port = htons(atoi(argv[2]));
    addr.sin_addr.s_addr = inet_addr(argv[1]);
    if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("connect");
        exit(2);
    }
        printf("Send to server massege\n");
        send(sock, msg1, sizeof(msg1), 0);
        recv(sock, buf, 1024, 0);
        printf("Reciving massege:%s\n",buf);
    close(sock);
    return 0;
}
Вот сервер:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
 
void reaper(int sig){
    int status;
    while(wait3(&status,WNOHANG,(struct rusage*)0)>=0);
}
 
int main()
{
    int sock, listener;
    struct sockaddr_in addr;
    char buf[1024];
    int bytes_read,len = sizeof(struct sockaddr);
    listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0)
    {
        perror("socket");
        exit(1);
    }
    addr.sin_family = AF_INET;
    addr.sin_port = htons(0);
    addr.sin_addr.s_addr = INADDR_ANY;
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind");
        exit(2);
    }
    listen(listener, 3);
    getsockname(listener, (struct sockaddr *)&addr, &len);
    printf("port = %d\n",ntohs(addr.sin_port));
    signal(SIGCHLD,reaper);
    while(1)
    {
        sock = accept(listener,0, 0);
        if(sock < 0)
        {
            perror("accept");
            exit(3);
        }   
        switch(fork())
        {
        case -1:
            perror("fork");
            break;    
        case 0:
            close(listener);
            while(1)
            {
                bytes_read = recv(sock, buf, 1024, 0);
                if(bytes_read <= 0) break;
                buf[bytes_read] = '\0';
                printf("Reciving massege:%s\n",buf);
                printf("Send to client massege\n");
                send(sock, buf, bytes_read, 0);
            }
 
            close(sock);
            exit(0);
            
        default:
            close(sock);
        }
    } 
    close(listener);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2018, 06:55
Помогаю со студенческими работами здесь

TCP клиент-сервер - Требуемый адрес для своего контекста не верен
Реализован клиент и сервер. Сервер - консольное приложение. Клиент - приложение WinForms СЕРВЕР public Socket...

Связь TCP сервер - сервер-клиент на node.js - браузер. нужна коррекция
Суть проблемы: написал по примерам программу, с помощью которой можно с браузера отправить команду на TCP сервер и получить ответ. Все...

Нужен ли хостинг или что то еще, для работы программ клиент-сервер(TCP/IP) на разных компьютерах?
Нужен ли хостинг или что то еще, для работы программ клиент-сервер(TCP/IP) на разных компьютерах?

Tcp ip клиент-сервер C++ сервер выводит мусор
server # include &lt;sys/types.h&gt; # include &lt;iostream&gt; # include &lt;winsock2.h&gt; # include &lt;stdlib.h&gt; # pragma comment (lib,...

TCP/IP клиент и сервер
Сервер # include &lt;sys/types.h&gt; # include &lt;iostream&gt; # include &lt;winsock2.h&gt; # include &lt;stdlib.h&gt; # pragma comment (lib,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru