versuchen broadcast über udp-socket

Hab ich stieß auf ein problem mit meinem Rundfunk-server. im Grunde möchte ich es, zum senden von übertragungen kontinuierlich von dem moment an, dann starte ich es. aus irgendeinem Grund wird es nicht beginnen, bis er eine Verbindung von irgendwo. Ich muss es versaut haben etwas, aber ich kann nicht erkennen, was.

hier ist mein code:

WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    SOCKET sock;
    sock = socket(AF_INET, SOCK_DGRAM, 0);
    char broadcast = 'a';

    if(setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast)) < 0)
    {
        perror("broadcast options");
        closesocket(sock);
        return 1;
    }
    struct sockaddr_in Recv_addr;
    struct sockaddr_in Sender_addr;
    int len = sizeof(struct sockaddr_in);
    char recvBuff[50];
    int recvBuffLen = 50;
    //char sendMsg[] = "broadcast message from salam rofl";

    Recv_addr.sin_family = AF_INET;
    Recv_addr.sin_port = htons(PORT);
    Recv_addr.sin_addr.s_addr = INADDR_ANY;

    if(bind(sock, (sockaddr*)&Recv_addr, sizeof(Recv_addr)) < 0)
    {
        perror("bind");
        _getch;
        closesocket(sock);
        return 1;
    }

    //recvfrom(sock, recvBuff, recvBuffLen, 0, (sockaddr *)&Sender_addr, &len);
    //cout << "\nreceived message: " << recvBuff;

    while(1)
    {
        Sleep(3000);


        //_getch();

        getTime();
        if(sendto(sock, currentTime, strlen(currentTime)+1, 0, (sockaddr *)&Sender_addr, sizeof(Sender_addr)) < 0)
        {
            perror("borhot send: ");
            _getch();
            closesocket(sock);
            return 0;
        }
        else cout << "message sent successfully";
    }

    _getch;
    closesocket(sock);
    WSACleanup();
    return 0;

grundsätzlich, wenn ich entfernen, recvfrom, es wird mir eine senden-Fehler ("No error"), die einfach verwirrt mich. auch, wenn ich es etwas mit einem client, wird die übertragung starten, aber wenn ich eine Verbindung mit einem anderen client, nur der erste client, der den Erhalt der Sendung.

vielen Dank im Voraus.
Ich bezweifle, dass es darauf ankommt, aber ich versuche, die Sendung der aktuellen Zeit.

Nur eine Frage; ich weiß, das ist super alt. Warum broadcast = 'a'? Warum nicht broadcast = 1?
Ha, gute Frage - ich wohl nicht besser wissen. Das war wirklich lange her, und ich weiß es nicht wirklich. Es ist interessant zu sehen, dass die Fragen, die ich fragte zurück, wenn ich nur begann Sie das Studium der sockets.
Haha ich Stimme zu, habe ich wieder ein paar mal und facepalmed.

InformationsquelleAutor icarus | 2013-06-06

Schreibe einen Kommentar