一 、广播
广播地址为 最大的主机地址,整个网段内都能收到广播数据
例如192.168.0.0网段,广播地址为192.168.0.255
广播设置
发送端设置socket属性并设置发送地址为广播地址
int on = 1;
setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
接受端,正常接收广播数据
send.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>
#define BUF_SIZE 100
int main()
{
//socket
int iClient = socket(AF_INET, SOCK_DGRAM, 0);
if (-1 == iClient)
{
return -1;
}
printf("create socket ok\r\n");
//set broadcast
int on = 1;
int iRet = setsockopt(iClient, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
if (-1 == iRet)
{
return -1;
}
struct sockaddr_in stServer;
memset(&stServer, 0, sizeof(struct sockaddr_in));
stServer.sin_family = AF_INET;
stServer.sin_port = htons(8888);
stServer.sin_addr.s_addr = inet_addr("192.168.0.255");
//recvfrom sendto
char buf[BUF_SIZE] = {0};
struct sockaddr_in stClient;
socklen_t tLen = sizeof(struct sockaddr_in);
iRet = -1;
while(1)
{
memset(buf, 0, BUF_SIZE);
memset(&stClie