Форум программистов, компьютерный форум CyberForum.ru

Error 10022 в мультикаст сокете - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ссылочный параметр не изменяет переменную в Main http://www.cyberforum.ru/cpp-beginners/thread931405.html
Написал программу, где есть 2 функции, одна из них должна с помощью ссылочного параметра изменить переменную а в функции Main, но эта переменная не меняется после вызова этой функции. Подскажите, почему ? #include<iostream> using namespace std ; float tripleCallByValue (float ); float tripleCByReference (float &); int main () { float a;
C++ Программа для занесения объявлений в текстовый файл, управление объявлениями из текстового файла Доброго времени суток. Необходимо создать программу которая выполняет такие функции: 1. Занесение объявления (строка текста) в текстовый файл 2. Указание времени нахождения этого объявления в текстовом файле (вводится дата занесения объявления и кол-во дней) 3. Автоматическое удаление объявления из файла по истечении срока 4. Удобное наглядное представление текущих объявлений в табличном... http://www.cyberforum.ru/cpp-beginners/thread931362.html
Порядок байтов C++
Заранее извиняюсь если не туда пишу... Помогите определить порядок байтов: 01 00 00 00 71 82 3D 00 CB 82 3D 00 ED 68 4C 23 8E 0E E5 3F 9D E9 B1 6F 1F 60 E0 BF 69 41 83 A8 56 AA E1 3F 3A D5 52 27 3D DF C8 3F
C++ include
Добрый день. Сейчас скачал MSVS 2012 про версию (хочу посмотреть что такое Visual assist), и при создании первого проекта не подключает iostream. Посмотрел в папке include, там только 3 файла - pgobootrun.h, srv.h, vsgcapture.h Что пошло не так? Может имеет смысл переустановить? Добавлено через 9 минут А вообще неважно. Продолжу использовать 2013 студию, там автодополнение кода гораздо...
C++ Потоки http://www.cyberforum.ru/cpp-beginners/thread931291.html
Здравствуйте. Изначально код моей программы выглядел примерно так void Thread( void* pParams ) { //Код } void Thread1( void* pParams ) {
C++ JPEG -> ARGB -> DXT5 Суть в следующем: У меня есть картиночка в формате JPEG. Я ее разжимаю в RGB, а затем сжимаю в DXT5 и рисую на квадратик. На границах буковок появляются странные артефакты в виде "крупных" квадратов, но общая тенденция контура букв остается на месте. Что это? Свойство DXT5 или какой-то баг в алгоритме сжатия в DXT5? подробнее

Показать сообщение отдельно
Nastik-kum
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 16
31.07.2013, 13:29     Error 10022 в мультикаст сокете
Здравствуйте, подскажите, пожалуйста, в чем проблема. Задача: настроить мультикаст сокет и что-либо принять. Сначала все идет хорошо... Сокет создается, биндится, а потом при попытке подключиться к мультикаст группе выдает ошибку 10022 (Invalid argument). Я думаю, что проблема с адресом. Читала, что в Windows нужно писать не адрес источника мультикаста, а INADDR_ANY, к сожалению тоже не сработало. Также пыталась подключиться к группе с помощью setsockopt (закомментированный кусок) выпадает с ошибкой 10049 (Cannot assign requested address). В общем вообще не понимаю в чем проблема. Помогите, пожалуйста. Код прилагаю.
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
// F_U_t_U.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <winsock2.h>
#include <ws2tcpip.h>
#define DEFAULT_PORT "1234"
#define DEFAULT_BUFLEN 188
#include <winsock.h>
//#include <msocket.h>
 
#pragma comment(lib, "ws2_32.lib")
 
int main()
{
    int iResult = 0;
 
    WSADATA wsaData;
 
    SOCKET RecvSocket;
    sockaddr_in RecvAddr;
    sockaddr_in Remote;
 
    unsigned short Port = 1234;
 
    char RecvBuf[128];
    int BufLen = 128;
 
    sockaddr_in SenderAddr;
    int SenderAddrSize = sizeof (SenderAddr);
    int RecvAddrSize = sizeof(RecvAddr);
    //-----------------------------------------------
    // Initialize Winsock
    iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != NO_ERROR) {
        wprintf(L"WSAStartup failed with error %d\n", iResult);
        return 1;
    }
    //-----------------------------------------------
    // Create a receiver socket to receive datagrams
    RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (RecvSocket == INVALID_SOCKET) {
        wprintf(L"socket failed with error %d\n", WSAGetLastError());
        return 1;
    }
 
    const int optval = 1;
    setsockopt(RecvSocket, SOL_SOCKET, SO_REUSEADDR, (char *)&optval, sizeof(optval));
    //-----------------------------------------------
    // Bind the socket to any address and the specified port.
    RecvAddr.sin_family = AF_INET;
    RecvAddr.sin_port = htons(Port);
    RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);
 
    iResult = bind(RecvSocket, (SOCKADDR *) & RecvAddr, sizeof (RecvAddr));
    if (iResult != 0) {
        wprintf(L"bind failed with error %d\n", WSAGetLastError());
        return 1;
    }
 
    //iResult = setsockopt(RecvSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&RecvAddr, sizeof(RecvAddr));
    //if (iResult != 0) {
    //  wprintf(L"join to multicast group error %d\n", WSAGetLastError());
    //  getchar();
    //  return 1;
    //}
    
 
    WSABUF wsaCalleeData={0,0};
    Remote=RecvAddr;
    //Remote.sin_family=AF_INET;
    Remote.sin_port=htons(Port);
    Remote.sin_addr.s_addr=inet_addr("239.255.10.01");
    //Join the multicast group. Note that SockM is not used to send or receive data.
    //It is used when you want to leave the multicast group. You simply call closesocket() on it.
    //
    if((RecvSocket=WSAJoinLeaf(RecvSocket,(sockaddr *)&Remote,sizeof(Remote),NULL,
        &wsaCalleeData, NULL,NULL,JL_BOTH))==INVALID_SOCKET)  //JL_SENDER_ONLY
    {
        wprintf(L"WSAJoinLeaf failed with: %d\n",WSAGetLastError());
        getchar();
        //ShowMessage(ErrStr);
        closesocket(RecvSocket);
        WSACleanup();
        return -1;
    }
 
 
    //-----------------------------------------------
    // Call the recvfrom function to receive datagrams
    // on the bound socket.
    wprintf(L"Receiving datagrams...\n");
    iResult = recvfrom(RecvSocket,
        RecvBuf, BufLen, 0, (SOCKADDR *) & RecvAddr, &RecvAddrSize);
    if (iResult == SOCKET_ERROR) {
        wprintf(L"recvfrom failed with error %d\n", WSAGetLastError());
    }
 
    //-----------------------------------------------
    // Close the socket when finished receiving datagrams
    wprintf(L"Finished receiving. Closing socket.\n");
    iResult = closesocket(RecvSocket);
    if (iResult == SOCKET_ERROR) {
        wprintf(L"closesocket failed with error %d\n", WSAGetLastError());
        return 1;
    }
 
    //-----------------------------------------------
    // Clean up and exit.
    wprintf(L"Exiting.\n");
    WSACleanup();
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru