Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ FTP-client на Socket API https://www.cyberforum.ru/ cpp-networks/ thread1061671.html
Здравствуйте. Решил написать простенький FTP-клиент, всё получилось, кроме команды RETR. При получении файла приходит больше байт, чем надо. Сокеты создаются с параметром SOCK_STREAM. Вот небольшой кусок функции, которая сохраняет файл на стороне клиента, подскажите хотя бы алгоритм решения данной задачи int fd = open(file,O_WRONLY | O_CREAT); if (fd>0) { do { char buff; int...
Совмещение winsock и forms C++
Уважаемые форумчане, объясните мне пожалуйста как совместить эти две вещи. К Добавлено через 1 минуту К примеру у меня в обработчике события от нажатия кнопки есть зависание на функции селект
C++ Server-Sent Events: сохранение данных в .txt файл Ребята. У меня возникла проблема. Необходимо записывать данные получаемые по протоколу "Server-Sent Events", в .txt файл. Также необходимо, что-бы запись происходила в реальном времени. Заранее спасибо. https://www.cyberforum.ru/ cpp-networks/ thread1059104.html C++ Отправка UDP пакетов с задержкой в 5 мкс https://www.cyberforum.ru/ cpp-networks/ thread1058675.html
Здравствуйте.Как раз не давно с толкнулся с проблемой реализации отправки UDP пакетов с задержкой в 5 мкс.Хотел использовать функцию clock_nanosleep для задания задержки,но она к сожалению видимо не подходит,т.к сильно затягивает цикл по времени struct timespec time_for_sleep,endTTime,startTTime,endTTTime,startTTTime; time_for_sleep.tv_sec = 0; time_for_sleep.tv_nsec =...
Нужна литература на тему "Разработка параллельного сервера на линукс"? C++
Вообщем, если кто обладает инфой(статьи,ссылки или название книжек, прошу поделится). В основном хотелось бы побольше информации про взаимодействие проц-в через сокеты и реализация на этом сервера. За ранее спс.
C++ Копирование файлов из сети Я начинающий программист, уровень знаний на С++ почти нет. У меня такой вопрос, в сети есть несколько компьютеров(серверы). С своего компьютера, нормально вижу них, и удаленным рабочим столом зайду...Можно написать программу который скопирует один папку(из C:Program Files) на свой комп. Ихни Ip адреса, ученый записи, пароли мне известный. 1)Скажите с чего мне нужно научиться? 2)А возможно... https://www.cyberforum.ru/ cpp-networks/ thread1055930.html
C++ Интегрирование в HTML страницу https://www.cyberforum.ru/ cpp-networks/ thread1051489.html
Интересует такой вопрос , хочу поменять в социалке дизайн , как можно в резаться в HTML к примеру заменить css на свой . P.S Я знаю что дизайн будет у меня поменяться , интересует сам процесс .
Скачать текстовый файл в label / сохранить в файл C++
Добрый вечер! Необходимо реализовать действие при нажатии на кнопку в Form1.h private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { } позволяющее скачивать с удаленного сервера небольшой текстовый файл по ссылке вида вида http://site.com/text и его содержимое заносить в label. Читал про URLDownloadToFile #include<windows.h>
C++ Активное подключение к фтп. PORT Форумчане, прошу вашей помощи, пишу фтп клиент на с++, с использованием только библиотеки WinSock.h (класс FTP юзать нельзя) и возникла проблема в написании установки активного соединения. С Пассивным, все хорошо. Вот мой код, что я набросал, не знаю, насколько корректный... int init_data_port (int s) { sockaddr_in address, ftpconnect; int len; int ds =... https://www.cyberforum.ru/ cpp-networks/ thread1051322.html C++ Сервер TCP https://www.cyberforum.ru/ cpp-networks/ thread1050857.html
Задание: Обеспечить перемещение файла по фиксированным частям в несколько открытых соединений по сети. От клиента к серверу. Протокол взаимодействия TCP; Код клиента: #include "stdafx.h" #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #include <iostream> #include <locale.h> #include <conio.h>
Нужно передать файл, расположенный на рабочей станции, на которой выполняется сервер, на рабочую станцию​​, на которой выполняется клиент. MailSlot C++
Ребята. Нужна помощь. Нужно передать файл, расположенный на рабочей станции, на которой выполняется сервер, на рабочую станцию​​, на которой выполняется клиент. С помощью механизма MailSlot. Буду очень благодарен!!!
C++ Параметры функции wsaconnect Есть сервер и клиент они обмениваются сообщениями в синхронном режиме, пытаюсь перевести их на асинхронный режим ошибка в WSAConnect, c обычным connect работает нормально. сервер : SERVERwVersionRequested = MAKEWORD(2,2); WSAStartup(SERVERwVersionRequested, &SERVERwsaData); SERVERsServ = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED); SERVERaddr.sin_family = AF_INET;... https://www.cyberforum.ru/ cpp-networks/ thread1046244.html
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 3
0

Перестает "работать" сервер при повторном подключении клиента - C++ - Ответ 5585629

02.01.2014, 14:23. Показов 2471. Ответов 3
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Я совершенно недавно начал изучение С++ по этому столкнулся с проблемой которую не осилил.

Вообщем наш препод задал написать сервер-клиент. Клиент отсылает переменную x со случайным значением в диапазоне [-pi;pi] на сервер n раз. Сервер это значение принимает и выполняет расчет по формуле f=cos(x)*sin(x), а результат отсылает обратно на клиент. Клиент полученные с севера значения записывает в txt-файл. На этом по заданию, собственно, все.

Путем гугления и чтения лит-ры - задание выполнил, но вот какая штука:

После запуска сервера, он начинает работать в режиме ожидания подключения клиента. Запускаем клиент, происходит отправка пакетов, как положено, и после выполнения своей задачи, клиент закрывается. После этого, по идеи, сервер должен продолжить свою работу в прежнем режиме и при повторном запуске клиента выполнить операцию заново, но вот тут все не так, как при первом запуске клиента. Ничего не работает.

Я пробовал делать возврат в начало программы при завершении цикла while(2)(при потере связи с клиентом) путем помещения тела всей программы в цикл, так же пробовал делать возврат при помощи goto, в надежде, что программа вновь дойдет до момента ожидания клиента и после запуска последнего выполнит все как и в первый раз, но вместо этого мне программа стала выдавать ошибку 10038.

код клиента:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Код UDP клиента. Задача №5: Отправка n случайных значений в пределах [-pi;pi] с задержкой. получение ответа и запись его в файл.
 
#pragma comment (lib, "ws2_32.lib")
#include<WinSock2.h>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<fstream>
#include <iomanip>
 
using namespace std;
 
union Ufloat
{
    float f;
    char ch[sizeof(float)];
};
 
 int main()
 {
    Ufloat *A = new Ufloat;
    Ufloat a;
 
    ofstream fout("data_result.txt");
    int n;
    setlocale(LC_ALL,"RUS");
    srand(time(NULL));
    printf("Старт UDP-клиента\n\n");
    Sleep(1000);
 
     // WinSock 
        const int iReqWinsockVer = 2;
        WSADATA wsa_d;
        WORD wVersionRequested = MAKEWORD (2,2);
        int err = WSAStartup(wVersionRequested, &wsa_d);
        if (err !=0)
        {
             printf("Ошибка WSAStartup: %d\n", WSAGetLastError());
        }
        else printf("WinSock - oK...\n");
 
    // открытие и связывание сокета
        struct sockaddr_in Serveraddr;
 
        Serveraddr.sin_family=AF_INET;
        Serveraddr.sin_port=htons(35001);
        Serveraddr.sin_addr.s_addr= inet_addr("127.0.0.1");
 
        SOCKET sock = socket(AF_INET,SOCK_STREAM,0);
        if (sock == INVALID_SOCKET)
        {
            printf("Ошибка при открытии Socket'a: &d\n", WSAGetLastError());
        }
        else printf("Socket  - oK...\n");
 
        int msg = connect(sock, (struct sockaddr *)&Serveraddr, sizeof(Serveraddr));
        if (msg<0)
        {
            printf("Ошибка Connect: %d\n", WSAGetLastError());
        }
        else printf("Connect - oK...\n\n"); 
 
    fout<<"=====================Программа №5==================="<<endl;  
    fout<<"===========Результаты проведенных операций=========="<<endl;
    fout<<"====Функция выполняемая сервером: F=cos(x)*sin(x)===="<<endl;
 
    cout<<"Сколько раз выполнить действие? ";
    cin>>n;
 
    fout<<"===================================================="<<endl; 
    fout<<"        Программа выполнила "<<n<<" операции (-ий)"<<endl;
    fout<<"===================================================="<<endl<<endl;
 
    //Отправка-получение данных
        for (int i=1; i < n; i++)
        {
            //Отправка
            float x = rand() % 628-314;
            A->f = x/100;
            int msg_s = send(sock, A->ch, sizeof(a), 0);
            if (msg_s <= 0)
            {
                printf("\nОшибка отправки сообщения серверу: %d\n", WSAGetLastError());
            }
            else cout<<"Отправлено на сервер: "<<A->f<<endl;
 
            //Получение
            int msg_r=recv(sock, a.ch, sizeof(a), 0);
            if (msg_r <= 0)
            {
                printf("Ошибка чтения сообщения: %d\n", WSAGetLastError());
            }
            else printf("Ответ сервера: %.2f\n\n", a.f);
 
            fout<<"Отправлено на сервер:"<<A->f<<endl;
            fout<<"Ответ сервера: "<<setprecision(2)<<a.f<<endl<<endl;
            Sleep(100);
        };
 
    cout<<"====Все результаты записаны в файл data_result.txt===="<<endl<<"=============в корневой папке с программой============"<<endl<<endl<<endl;
    WSACleanup();
    Sleep(1500);
    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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Код UDP сервера. Задача №5: прием данных с клиента, обработка и отправка результата обратно на клиент.
 
#pragma comment (lib, "ws2_32.lib")
#include<iostream>
#include<WinSock2.h>
#include<stdio.h>
 
using namespace std;
union UFloat
{
    float f;
    char ch[sizeof(float)];
};
 
 int main(void)
 {
        UFloat *A = new UFloat;
        UFloat a;
        setlocale(LC_ALL,"RUS");
 
        printf("Старт UDP-сервера\n\n");
        //Sleep(1000);
     
     // WinSock 
        WSADATA wsa_d;
        WORD wVersionRequested = MAKEWORD (2,2);
        int err = WSAStartup(wVersionRequested, &wsa_d);
        if (err !=0)
        {
             printf("Ошибка WSAStartup: %d\n", WSAGetLastError());
        }
        else printf("WinSock - oK...\n");
 
    // открытие сокета
        SOCKET sock = socket(AF_INET,SOCK_STREAM,0);
        if (sock == INVALID_SOCKET)
        {
            printf("Ошибка при открытии Socket'a: &d\n", WSAGetLastError());
        }
        else printf("Socket - oK...\n");
 
    // Связывание сокета
        struct sockaddr_in localaddr;
        localaddr.sin_family=AF_INET;
        localaddr.sin_addr.s_addr=htonl(INADDR_ANY);
        localaddr.sin_port=htons(35001);
 
        if (bind(sock,(struct sockaddr *) &localaddr, sizeof(localaddr))==SOCKET_ERROR)
        {
            printf("Ошибка вызова Bind: &d\n", WSAGetLastError());
            closesocket(sock);
        }
        else printf("Bind - oK...\n");
 
            int msg = listen(sock, 5);
            if (msg)
            {
                printf("Ошибка Listen: &d\n", WSAGetLastError());
            }
            else printf("Listen - oK... Ждем клиента...\n\n");
 
            sock = accept(sock, NULL, NULL);
            if (sock < 0)
            {
                printf("Ошибка Accept: &d\n", WSAGetLastError());
            }
            else printf("Accept - oK...\n\n");
        
            //for (int i=1; i != 10000; i++)
            while(2)
            {
            //Слушаем клиента
                int msg_r = recv(sock, a.ch, sizeof(a), 0);
                if (msg_r <= 0)
                {
                    printf("Ошибка чтения сообщения: %d\n", WSAGetLastError());
                    break;
                    //goto strt;
                }
                else cout << "Получил сообщение от клиента: " << a.f << endl;
 
            //Отправляем обработанные данные клиенту
 
                A->f = sin(a.f)*cos(a.f); //Выполнение функции 
                printf ("Выполнение операции: F=sin(x)*cos(x)= %.2f\n",A->f);
                int msg_s = send(sock, A->ch, sizeof(a), 0);
                if (msg_s <= 0)
                {
                    printf("Ошибка отправки сообщения клиенту: %d\n", WSAGetLastError());
                }
                else printf("Результат отправлен успешно \n\n");
            };
    WSACleanup();
    system("pause");
    return 0;
  };

Благодарю за внимание.

Вернуться к обсуждению:
Перестает "работать" сервер при повторном подключении клиента C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2014, 14:23
Готовые ответы и решения:

Перестает работать WI FI при подключении определенного телефона
Здравствуйте форумчани))))Нужна помощь новичку. У меня дома стоит роутер TP-LINK TL-WR741ND....

При подключении VPN интернет перестаёт работать.
Добрый день! на прошлой неделе на работе сказали из дома работать. подрубили впн .. только вот...

При подключении автозаполнения форм, перестаёт работать карта.
Всем добра, народ дело такое недавно работаю с Javascript вот на сайт подключил google maps API там...

При подключении внешнего микрофона перестаёт работать камера
Добрый день Всем! У меня такая проблема при подключения внешнего микрофона перестаёт работать...

3
02.01.2014, 14:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2014, 14:23
Помогаю со студенческими работами здесь

При подключении ReportViewer перестает работать на другом комьютере
Проект разрабатываю на своем компьютере, потом exe модуль переношу на другие компьютеры. Все было...

Перестает работать touchpad при подключении Ethernet кабеля
Добрый день. Не уверен что правильно выбрал категорию, так что перенесите если нужно. Такая...

При подключении VPN часть программ перестает работать
При включении VPN часть программ перестает работать. Пропадает доступ к SQL Server. Скайп для...

При подключении видеокарты перестает работать монитор на разъемах материнки
Здравствуйте! Помогите решить следующую проблему. Если подключить монитор к материнской плате...

При подключении веб-камеры перестает работать сетевая карта
Здравствуйте, приобрел веб-камеру DNS-0302AB, при подключении к компьютеру и установки драйверов,...

При подключении второго жесткого диска перестает работать Интернет
При подключении второго жесткого диска перестает работать Интернет. Стоит отключить его - тут же...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru