[問題] 為何無法在windows底下加入指定的group

看板C_and_CPP (C/C++)作者 (nono)時間16年前 (2009/04/29 16:30), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
小弟寫了一個client的程式如下 #pragma comment (lib,"ws2_32.lib") #include <stdio.h> #include <stdlib.h> #include <string.h> #include <winsock.h> #define SERV_PORT 1800 #define CLI_PORT 1801 #define MAXDATA 1024 int size; int Start_Winsock() { WSAData m_wsaData; if(WSAStartup(0x0101, (LPWSADATA)&m_wsaData)) { printf("Error: Can't open winsock\n"); return -1; } return 0; } void main(void) { int recv_sock; int reuse = 1; char recv[MAXDATA]; struct sockaddr_in recv_addr; struct ip_mreq group; Start_Winsock(); recv_sock = socket(AF_INET, SOCK_DGRAM, 0); if (recv_sock == -1) { return -1; } if (setsockopt(recv_sock, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse)) < 0) { printf("setting SO_REUSEADDR"); closesocket(recv_sock); return -1; } memset(&recv_addr, 0, sizeof(recv_addr)); recv_addr.sin_family = AF_INET; recv_addr.sin_addr.s_addr = INADDR_ANY; recv_addr.sin_port = htons(CLI_PORT); if(bind(recv_sock, (struct sockaddr *)&recv_addr, sizeof(recv_addr)) < 0) { perror("Binding datagram socket error "); system("pause"); exit (1); } group.imr_multiaddr.s_addr = inet_addr("239.255.255.250"); group.imr_interface.s_addr = htonl(INADDR_ANY); if (setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&group, sizeof(group)) < 0 ) { perror("adding multicast group\n"); system("pause"); closesocket(recv_sock); return -1; } 但我的程式執行到上面的步驟 無法加入我所指定的group setsockopt的回傳直是-1 印出的訊息如下 adding multicast group : No error 麻煩高手幫忙看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.203.50

04/29 17:22, , 1F
errno
04/29 17:22, 1F
※ 編輯: braynwu 來自: 210.243.128.59 (04/29 17:36) ※ 編輯: braynwu 來自: 210.243.128.59 (04/29 17:41)
文章代碼(AID): #19-10Q-p (C_and_CPP)
文章代碼(AID): #19-10Q-p (C_and_CPP)