1、端口定义 /*组播套接字*/ SOCKET server; 2、创建组播组 BOOL CChatDlg::StartMulticastService() { WSAData wsaData; ::WSAStartup(MAKEWORD(2, 2), &wsaData); /*建立套接字*/ server = socket(AF_INET, SOCK_DGRAM, 0); /*允许端口可重复绑定*/ const int on = 1; int ret = setsockopt(server, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on)); if (ret == SOCKET_ERROR) { WSACleanup(); return FALSE; } /*设置多播组数据的TTL值*/ const int routenum = 10; ret = setsockopt(server, IPPROTO_IP, IP_MULTICAST_TTL, \ (char*)&routenum, sizeof(routenum)); if (ret == SOCKET_ERROR) { WSACleanup(); return FALSE; } /*设置回环许可*/ const int loopback = 1; ret = setsockopt(server, IPPROTO_IP, IP_MULTICAST_LOOP, \ (char*)&loopback, sizeof(loopback)); if (ret == SOCKET_ERROR) { WSACleanup(); return FALSE; } sockaddr_in local; memset(&local, 0, sizeof(local));;/*初始化组播地址为0*/ local.sin_family