虽然我尝试在Win XP中多播一些IP范围,但它工作正常,但是当我在Win VIsta上运行相同的应用程序,我无法多播。 我是否需要为Win Vitsaconfiguration或添加发布者信息?
编辑:
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);
编辑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; }
那么经过很多次的实验后,我无法弄清楚为什么Multi casting不能正常工作,突然发现这是因为我的Vista上没有Network Discovery 。
所以如果在这里我做了什么,进入控制面板 – >设置文件共享 (在网络和互联网下 ) – > 共享和发现 ,然后打开或关闭网络发现
那么,那么我的应用程序和源代码的工作是我在我的问题发布。 充分希望这将节省您的一些时间和挫折。