18,356
社区成员
发帖
与我相关
我的任务
分享
WSADATA wsa;
SOCKET udp;
SOCKADDR_IN sinPeer;
struct in_addr eth0;
int flag = 0;
WSAStartup(MAKEWORD(2, 2), &wsa);
udp = socket(AF_INET, SOCK_DGRAM, 0);
eth0.s_addr = htonl(INADDR_ANY);
setsockopt(udp, IPPROTO_IP, IP_MULTICAST_IF, ð0, sizeof(eth0));
memset(&sinPeer, 0, sizeof(sinPeer));
sinPeer.sin_family = AF_INET;
sinPeer.sin_port = htons(3702);
sinPeer.sin_addr.s_addr = inet_addr("239.255.255.250");
while (1)
{
sendto(udp, "1234567", 7, 0, (SOCKADDR *)&sinPeer, sizeof(sinPeer));
Sleep(10);
}
setsockopt(udp, IPPROTO_IP, IP_MULTICAST_IF, ð0, sizeof(eth0))
时的,组播是能发出去的,对方如果加入了组,能收到.
eth0.s_addr = htonl(INADDR_ANY);
也不好用,得改成实际地址,比如是
eth0.s_addr = inet_addr("192.168.1.5");
// 创建套接字
m_hSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (m_hSocket == INVALID_SOCKET)
return FALSE;
// 设置广播参数
BOOL bBroadCast = TRUE;
if (setsockopt(m_hSocket, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadCast, sizeof(BOOL)) == SOCKET_ERROR)
return FALSE;
// 设置套接字可重用
BOOL bReuseAddr = TRUE;
if (setsockopt(m_hSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&bReuseAddr, sizeof (BOOL)) == SOCKET_ERROR)
return FALSE;
// 接收地址
m_saiLocalAddr.sin_family = AF_INET;
m_saiLocalAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
m_saiLocalAddr.sin_port = htons(nLocalPort);
int nRet = bind(m_hSocket, (sockaddr*)&m_saiLocalAddr, sizeof(sockaddr_in));
if (nRet != 0)
return FALSE;
// 发送地址
m_saiRemoteAddr.sin_family = AF_INET;
m_saiRemoteAddr.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);
m_saiRemoteAddr.sin_port = htons(nRemotePort);
return TRUE;
eth0.s_addr = htonl(INADDR_ANY);
setsockopt(udp, IPPROTO_IP, IP_MULTICAST_IF, ð0, sizeof(eth0));
这行