Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Передача данных по ip и портам https://www.cyberforum.ru/ cpp-networks/ thread1859177.html
Как реализовать программу, которая будет работать на вычислителе, принимать с программы из компьютера по ip и порту данные на вычислитель и передающая по по ip и порту на индикатор? Может кто помочь? Вот система
C++ Ping, proxy Надо подключиться к прокси серверу и ping-ануть любой сайт... компонент предназначеный для ping в rad studio(IdcmpClient) не поддерживает прокси. Как быть? https://www.cyberforum.ru/ cpp-networks/ thread1860753.html
Ошибка: "Сделана попытка выполнить операцию на объекте, не являющемся сокетом." C++
Всем доброго времени суток. Имеется сервер и клиент. Нужно с клиента переслать бинарный файл на сервер и исполнить его. Файл открывается в бинарном режиме, читает в буфер, делает send. Сервер...
C++ Пример защищённого соединения socket OpenSSL https://www.cyberforum.ru/ cpp-networks/ thread1858900.html
Прошу поделиться простеньким примером использования OpenSSL и создания самопальных сертификатов для установки защищённых соединений под Windows. С библиотеками вроде как разобрался..Простой... 1. Читай инструкцию к OpenSSL. Где ее читать? Пожалуйста киньте ссылку.
C++ P2P материалы и библиотеки Всем привет! Для обучения и общего развития (планирую курсовую) мне необходимо сделать простой чат по протоколу peer to peer причем полностью децентрализованный вариант. Пусть этот чат позволяет... https://www.cyberforum.ru/ cpp-networks/ thread1860526.html C++ В Win10 зависает cmd окно и ошибка, а на Windows Server 2003 всё нормально Зависает cmd окно и ошибка на windows 10!!! . А на windows server 2003 всё ок. вчём причина подскажите!? #include "stdafx.h" #include "easendmailobj.tlh" gugea, проверяйте получили ли вы интерфейс https://www.cyberforum.ru/ cpp-networks/ thread1864804.html
C++ Отправка сообщения раз в 10 секунд Здравствуйте! Есть эхо tcp сервер и клиент, как сделать, чтобы сообщения от клиента отправлялось и следующее можно было бы отправить через определенно время, а при попытке отправить раньше сообщение... Вот код: while (true) { nsize = recv(my_sock, &buff, sizeof(buff) - 1, 0); // ставим завершающий ноль в конце строки buff = 0; // выводим на экран printf("S=>C:%s", buff); https://www.cyberforum.ru/ cpp-networks/ thread1866354.html C++ Ошибка в приложении сервера https://www.cyberforum.ru/ cpp-networks/ thread1858009.html
Вот листинг приложения сервера. Пишу на VS 2010. При использовании recv выдаёт ошибку: error C2065: recvBuf: необъявленный идентификатор. Как исправить эту ошибку? // Server.cpp #... Между 69 и 70 строкой вставить char recvBuf; А между 74 и 75: recvBuf = 0; Не знаю как отнесется майкрософтофский компилятор, скорее всего потребуется 72 строку изменить на int iResult =...
C++ Неправильно передаёт данные с сервера на клиент Всех приветствую, друзья :) https://www.cyberforum.ru/ cpp-networks/ thread1859194.html C++ TCP клиент-сервер https://www.cyberforum.ru/ cpp-networks/ thread1859644.html
Всем привет! Прошу помощи в освоении организации передачи данных по TCP. Если у кого то есть рабочий исходник TCP чата, то было бы вообще супер, а так был бы очень рад и благодарен, если мне... takhvatulin, можно еще проще memset(buffer, sizeof(buffer), 0); Лучше: char buffer; memset(buffer, BUFF_SIZE, 0);
Не правильно передает данные с сервера на клиент C++
Всех приветствую, друзья :) Возникла такая проблема. 2 дня назад всё было просто замечательно, я был счастлив потому что все работало и я даже не волновался. Но по каким-то мистическим...
C++ Переделать сниффер для работы по всем IP https://www.cyberforum.ru/ cpp-networks/ thread1855653.html
Ребята, пожалуйста помогите доделать программу. Нашел рабочий сниффер на хабре. Но проблема в том, что там интер по определенному айпи, который ты сам вводишь, можно ли ее ка-то переделать, чтобы она... если хочешь сделать что-то нормальное, то пиши на драйвере Pcap Можно использовать обертку для C++ - libtins. Недавно перевел свой проект как раз с winpcap на libtins, чтобы не разбирать пакеты...
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 70
0

Работа с UDP, таймаут для setsockopt - C++ - Ответ 9853309

04.12.2016, 22:40. Показов 3552. Ответов 3
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времни суток. Пользуюсь Windows 8.1, Visual Studio 2013, C++. Пытаюсь использовать setsockopt для установки таймаута у recvfrom, в общем проблема в том,что setsockopt возвращает -1, а печать ошибки (perror("Error"); или « std::strerror(errno)) возвращает строку "No error", и в общем таймаут не работает.
Подскажите что я делаю не так ?
вот "главный" кусочек кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 while (true)
    {
        
        if (setsockopt(receivefd, SOCK_DGRAM, SO_KEEPALIVE, (const char*)&val, sizeof DWORD) < 0) {
            perror("Error");
            std::cout << "log(-1) failed: " << std::strerror(errno) << '\n';
        }
        recvlen = recvfrom(receivefd, buf, BUFSIZE, 0, (struct sockaddr *)&receiveaddr, &receiveaddrlen);
        if (recvlen > 0) {
            buf[recvlen] = 0;
            printf("received message: "%s"\n", buf);
            char lightbulbID  = rand() % 8 + 1;
            lightbulbID += '0';
            if (sendto(sendfd, "HI", strlen("HI"), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) >= 0) {
                printf("dending message: hello from outside%c\n", lightbulbID);
            }
        //  MessageBoxA(NULL, buf, "Error", MB_OK);
        }
 
    }
И полный листинг проги, она пока не хитрая (и не акуратноя).
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// UDPActivity.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#pragma comment(lib,"ws2_32.lib")
 
#include <stdio.h>
#include <WinSock2.h>
#include <Ws2tcpip.h>
#include <iostream>
#include <stdio.h>  
#include <stdlib.h>  
 
#define BUFSIZE 2048
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    WSAData wsaData;
    WORD DLLVersion = MAKEWORD(2, 1);
    if (WSAStartup(DLLVersion, &wsaData) != 0)
    {
        MessageBoxA(NULL, "Winsock startup failed", "Error", MB_OK);
    }
    ////////////////
    SOCKADDR_IN  receiveaddr;
    int receiveaddrlen = sizeof(receiveaddr);
    //addr.sin_addr.s_addr = inet_pton("127.0.0.1");  //127.0.0.1  //192.168.113.30  //169.254.81.194
    inet_pton(AF_INET, "127.0.0.1", &receiveaddr.sin_addr);
    receiveaddr.sin_family = AF_INET;
    receiveaddr.sin_port = htons(2222);
 
 
    SOCKET receivefd;
    if ((receivefd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 
        MessageBoxA(NULL, "cannot create socket. ", "Error", MB_OK);
 
    }
 
 
    
    if (bind(receivefd, (struct sockaddr *)&receiveaddr, sizeof(receiveaddr)) < 0) {
    //  MessageBoxA(NULL, "Bind failed. ", "Error", MB_OK);
 
    }
    
    
 
 
 
    ////////////////
    SOCKADDR_IN  sendaddr;
    int sendaddrlen = sizeof(sendaddr);
    //addr.sin_addr.s_addr = inet_pton("127.0.0.1");  //127.0.0.1  //192.168.113.30  //169.254.81.194
    inet_pton(AF_INET, "127.0.0.1", &sendaddr.sin_addr);
    sendaddr.sin_family = AF_INET;
    sendaddr.sin_port = htons(1111);
    
 
    SOCKET sendfd;
    if ((sendfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 
    //  MessageBoxA(NULL, "cannot create socket. ", "Error", MB_OK);
 
    }
 
 
 
    if (bind(sendfd, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) < 0) {
        MessageBoxA(NULL, "Bind failed. ", "Error", MB_OK);
 
    }
 
    //char[] my_message = "hello UDP";
 
    {
 
 
        if (sendto(sendfd, "hello from outside", strlen("hello from outside"), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) < 0) {
            MessageBoxA(NULL, "ending failed. ", "Error", MB_OK);
        }
 
    }
    //struct sockaddr_in remaddr;     /* remote address */
    //socklen_t addrlen = sizeof(remaddr);            /* length of addresses */
    int recvlen;                 /* # bytes received */
    //  int fd;                         /* our socket */
    char buf[BUFSIZE];     /* receive buffer */
 
 
    DWORD val = 600;
 
    while (true)
    {
        
        if (setsockopt(receivefd, SOCK_DGRAM, SO_KEEPALIVE, (const char*)&val, sizeof DWORD) < 0) {
            perror("Error");
            std::cout << "log(-1) failed: " << std::strerror(errno) << '\n';
        }
        recvlen = recvfrom(receivefd, buf, BUFSIZE, 0, (struct sockaddr *)&receiveaddr, &receiveaddrlen);
        if (recvlen > 0) {
            buf[recvlen] = 0;
            printf("received message: "%s"\n", buf);
            char lightbulbID  = rand() % 8 + 1;
            lightbulbID += '0';
            if (sendto(sendfd, "HI", strlen("HI"), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)) >= 0) {
                printf("dending message: hello from outside%c\n", lightbulbID);
            }
        //  MessageBoxA(NULL, buf, "Error", MB_OK);
        }
 
    }
 
 
 
    return 0;
}


Вернуться к обсуждению:
Работа с UDP, таймаут для setsockopt C++
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2016, 22:40
Готовые ответы и решения:

Для чего SO_REUSEADDR в setsockopt?
я так понял, что это нужно, если вызываешь bind для определенного сетевого интерфейса(типа 192.168.1.5). Вот я выставил определенный, но...

Работа с протоколом UDP. "Требуемый адрес для своего контекста неверен"
Доброго времени суток! Пишу простую программу переписки. Для того, чтобы понять, как работать с протоколом UDP решил написать...

Таймаут для метода
В общем попытался написать таймаут для метода. То есть метод не должен работать по времени дольше, чем я ему задал. Но У меня немного не...

3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2016, 22:40
Помогаю со студенческими работами здесь

Ошибка при работе вызова setsockopt
При создании udp socketa для multicast необходим вызов функции setsockopt(sockfd, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP, (char...

Установить таймаут для IdHTTP
всем привет) ситуация такая... получаю ответ от сервера через idHTTP когда соединение с интернетом установлено всё окей когда...

Задать таймаут для соединения с прокси
Как? Поскольку получается, что если прокси в данный момент не доступен, приложение задумывается очень надолго (порядка нескольких минут)...

Работа с UDP
1. как правильно реализовать прием/пердачу по udp на несколько портов 2. и как можно передать в слот readDatagrams номер порта чтобы не...

Работа с UDP
Отправка запроса void MainWindow::SayHello() { DWORD Tick; Tick = GetTickCount(); QByteArray Data; ...

0
Новые блоги и статьи
std::mutex в C++: Хитрости и тонкости использования
Wired 03.03.2025
В C++ ключевым инструментом для обеспечения корректной работы параллельных процессов выступает std::mutex – примитив синхронизации, появившийся в стандарте C++11. До его появления использовали. . .
std::span в C++: Производительно­сть и практическое использование
Wired 03.03.2025
Традиционная работа с указателями и массивами часто приводит к ошибкам и уязвимостям в безопасности. Именно поэтому в C++20 появился std::span - легковесная обертка, обеспечивающая безопасный. . .
std::span в C++: Константность и безопасность типов
Wired 03.03.2025
std::span - представитель семейства view-типов, появившийся в стандарте C++20. Этот компонент предоставляет легковесное и эффективное решение для работы с непрерывными последовательностями данных,. . .
std::span в C++: Subview и Slice
Wired 03.03.2025
std::span - невладеющий тип данных C++, который предоставляет гибкий интерфейс для работы с непрерывными последовательностями элементов. Этот тип существенно упрощает обработку массивов и. . .
std::span в C++: Доступ к элементам и итерирование
Wired 03.03.2025
Появление std::span в стандарте C++20 стало значительным шагом вперед, предоставив разработчикам средство для безопасного и производительного доступа к непрерывным последовательностям элементов. . . .
std::span в C++: Управление массивами данных без владения
Wired 03.03.2025
Новый класс std::span, появившийся в стандарте C++20, открывает возможности для оптимизации работы с последовательными наборами данных. По сути, это легковесная обертка, которая предоставляет доступ. . .
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru