介绍
udp广播包其实就是往整个局域网内发送udp数据报,而不是单个目的终端。发送udp广播包的时候要记住发送频率,否则很容易形成广播风暴,而导致局域网的网络瘫痪。如果局域网有多个网段,那不同的网段是接收不到其它局域网的广播包的。下面是一个基于udp广播实现的回显服务,这是一个很简单的例子,分为服务端和客户端。
代码
因为是windows下的网络编程开发,所以先初始化网络环境,使用的是WSAStartup API初始化和WSACleanup反初始化清理资源。切记,在windows下的网络编程开发,如果不使用WSAStartup初始化,其它的winsock API调用都会失败。
#include <WinSock2.h>
#include <assert.h>
#include <string>
#include <stdint.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
const int16_t g_udp_port = 25678;
bool init()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if