首先,在此简单的说明一下自己对单播、组播、广播的理解(PS:肤浅的理解)
- 单播:就是一对一通信
- 广播:一对多的通信,类似村口广播,全村都能听见
- 组播:就是一对多通信,通俗的讲,就是分组,村里喊一部分人来开发,不是所有人都来开会。
服务端或者说接收端代码:
//头文件
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
//调用WSAStartup函数
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
std::cout << "WSAStartup error" << std::endl;
return;
}
//创建Socket
m_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (m_socket == SOCKET_ERROR)
{
std::cout << "socket error" << std::endl;
return;
}
//绑定地址信息
m_RecvAddr.sin_family = AF_INET;
m_RecvAddr.sin_port = htons(绑定端口);
m_RecvAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
UCHAR uLoop = 0; // 0-同一台主机,1-跨主机
ULONG ul = 1;
int nTimeOut = 1000;
bool bOptval = true;
//用于端口接收单播、组播、广播
int ret = setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (char*)&am