2010-12-14 12 views
2

Während ich versuche, etwas auf IP-Bereich in Win XP Multicast, funktioniert es gut, aber während ich die gleiche Anwendung auf Win VIsta laufen kann ich nicht Multicast. Muss ich Publisher-Informationen für Win Vitsa konfigurieren oder hinzufügen?Multicast funktioniert nicht auf Windows Vista

Edit:

struct sockaddr_in staddr; 
    memset(&staddr, 0, sizeof(struct sockaddr_in)); 
    staddr.sin_family = AF_INET; 
    staddr.sin_port = htons(SSDP_PORT); // Use the first free port 
    staddr.sin_addr.s_addr=inet_addr(SSDP_MULTICAST_ADDRESS); 

    int socklen = sizeof(struct sockaddr_in); 

bearbeitet 2

Socket Creation 
int ibindstatus =0 ; 
    try 
    { 
    //Initailize the WinSock 
    WSADATA wsaData; 
    WSAStartup(MAKEWORD(2,2), &wsaData); 

    struct in_addr iaddr; 
    struct sockaddr_in staddr; 
    // set content of struct saddr and imreq to zero 
    memset(&staddr, 0, sizeof(struct sockaddr_in)); 
    memset(&iaddr, 0, sizeof(struct in_addr)); 

    // open a UDP socket 

    m_iSocket = socket(AF_INET, SOCK_DGRAM, 0); 
    if (m_iSocket < 0)  
    {  
     return SOCKET_NOT_AVAILABLE; 
    } 

    staddr.sin_family = AF_INET; 
    staddr.sin_port = htons(SSDP_PORT); // Use the first free port 
    staddr.sin_addr.s_addr = htonl(INADDR_ANY); // bind socket to any interface 

    ibindstatus = bind(m_iSocket, (struct sockaddr *)&staddr, sizeof(struct sockaddr_in)); 
    if (ibindstatus < 0) 
    { 
     return SOCKET_BIND_ERROR; 
    } 


    //send the buffer 
    int iSendStatus = sendto(m_iSocket, cSendData, lSendDataLen, 0, 
        (struct sockaddr *)&staddr, socklen); 
    if(iSendStatus< 0) 
    { 
     return SEND_ERROR;  
    } 
+1

Könnten Sie bitte etwas Code posten? – Simone

+0

@Simone, aktualisiert mit Code – Simsons

+0

Überprüfen Sie zuerst mit Wireshark, vielleicht sendet Ihre Maschine über den falschen Adapter. –

Antwort

0

Nun nach lotz von Experimenten ich nicht in der Lage war, um herauszufinden, warum Multi Casting nicht funktioniert, und fand heraus, plötzlich diese ist, weil Network Discovery auf meinem Vista ausgeschaltet war.

Also hier Wenn das, was ich tat, Zum Systemsteuerung ->SetUp File Sharing (Unter Netzwerk und Internet) ->Freigabe und Erkennung und dann ein- oder ausschalten der Netzwerk-Discovery

Gut thats, was für meine Anwendung arbeiten und der Quellcode ist, was ich in meiner Frage geschrieben habe. Hoffe, das wird dir Zeit und Ärger ersparen.