广播通信

//客户端代码
#include <iostream>
#include <WINSOCK2.H>

using namespace std;

#pragma  comment(lib,"ws2_32.lib")

int main()
{
	WSADATA wsa;
	WSAStartup(0x0202, &wsa);
	SOCKET sSendSock = socket(AF_INET, SOCK_DGRAM, 0);

	BOOL bBroadcast = true;
	setsockopt(sSendSock, SOL_SOCKET, SO_BROADCAST, 
		(char *)&bBroadcast, sizeof(BOOL));

	sockaddr_in siBroadcastAddr;
	ZeroMemory(&siBroadcastAddr, sizeof(sockaddr_in));
	siBroadcastAddr.sin_family = AF_INET;
	siBroadcastAddr.sin_port = htons(4567);
	siBroadcastAddr.sin_addr.s_addr = INADDR_BROADCAST;

	char sz[] = "test broadcast";
	while(true)
	{
		sendto(sSendSock, sz, strlen(sz), 0, (sockaddr*)&siBroadcastAddr, sizeof(sockaddr));
		Sleep(5000);
	}
}

和一般的UDP通信没太大的区别,主要区别有两点:

第一,setsockopt将socket设置支持广播通信;

第二,socket发送的目的地址为广播地址。

因此,要使用广播通信,不管是客户端还是服务器都需要支持两点,一是setsockopt设置支持广播通信,而是sendto的接收地址是广播地址。

Winsock 是 Windows 操作系统中的一个网络编程接口,可以用于在计算机之间进行通信。在 Winsock 中,广播是一种特殊的通信方式,它允许一台计算机将消息发送给同一局域网中的所有其他计算机。 在 Winsock 中进行广播通信需要以下几个步骤: 1. 创建一个 socket:首先,需要创建一个 socket,使用 Winsock 提供的 API 函数来完成。可以选择使用 UDP 或 TCP 协议,但在广播通信中,UDP 更常见。创建 socket 时需要指定地址族、协议类型和操作方式等参数。 2. 设置广播选项:在创建的 socket 上设置广播选项,以便允许广播发送和接收。可以使用 `setsockopt` 函数来设置 socket 的选项,使用 `SO_BROADCAST` 参数来启用广播功能。 3. 绑定地址和端口:将 socket 绑定到一个本地 IP 地址和端口上,以便可以接收和发送广播消息。在绑定时需要指定广播专用的 IP 地址和端口号。 4. 发送广播消息:使用 `sendto` 函数向指定的广播 IP 地址和端口发送消息。可以根据实际需求自定义消息内容和格式。 5. 接收广播消息:使用 `recvfrom` 函数从绑定的端口接收广播消息。在接收到消息后,可以对消息内容进行处理,并根据需要做出相应的回应。 需要注意的是,广播通信受到网络环境的限制,只能在同一局域网中的计算机之间进行。同时,接收方计算机需要启用广播功能,并正确设置 socket 的广播选项。广播通信可以用于在局域网中广播消息,例如查找在线设备、通知系统状态变化等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值