广播 UDP 发送与接收

news/2023/11/29 15:25:02

发送方:

/*===============================================
 *   文件名称:sendto.c
 *   创 建 者:     
 *   创建日期:2022年09月08日
 *   描    述:
 ================================================*/
#include <stdio.h>
#include  <sys/types.h>          /* See NOTES
*/
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <strings.h>
#include <unistd.h>

int main(int argc, char *argv[])

    int sockfd =socket(AF_INET,SOCK_DGRAM,0);
    if(-1==sockfd)
    {
        perror("socket");
        return -1;
    }

    int on=1;
    if(-1==setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on)))
    {
        perror("setsockopt");
        return -1;
    }

    struct sockaddr_in addr;
    bzero(&addr,sizeof(addr));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(6666);//接收方的端口号
   
addr.sin_addr.s_addr=inet_addr("192.168.31.255");//广播地址

    char  buf[1024]="hello xzj";
    while (1)
    {
     
  if(-1==sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr*)&addr,sizeof(addr)))
        {
            perror("sendto");
            break;
        }
    }
    close (sockfd);
    return 0;

接收方:

/*===============================================
*   文件名称:recvfrom.c
*   创 建 者:     
*   创建日期:2022年09月08日
*   描    述:
================================================*/
#include <stdio.h>
#include  <sys/types.h>          /* See NOTES
*/
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <strings.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    int sockfd =socket(AF_INET,SOCK_DGRAM,0);
    if(-1==sockfd)
    {
        perror("socket");
        return -1;
    }
    struct sockaddr_in addr;
    bzero(&addr,sizeof(addr));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(6666);//接收方的端口号
    addr.sin_addr.s_addr=inet_addr("192.168.31.255");//广播地址

    int ret=bind(sockfd,(struct sockaddr *)&addr,sizeof(addr));//绑定sockfd的ip号和端口
    if(ret==-1)
    {
      perror("bind");
      return -1;
     }

    char buf[1024]={0};
     while (1)
    {
     
  if(-1==recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL))//接收
        {
            perror("recvfrom");
            break;
        }
        puts(buf);
    }
    close (sockfd);
    return 0;
}

 

结果:


https://www.xjx100.cn/news/444364.html

相关文章

UDP 单播、广播和多播

阅读目录(Content) 目录 一、UDP广播 二、UDP多播 1、多播&#xff08;组播&#xff09;的概念 2、广域网的多播 3、多播程序设计的框架 4、多播实现代码 三、UDP广播与单播 广播与单播的比较 使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器…

UDP广播的实现

一、广播的概念 广播&#xff1a;由一台主机向该主机所在子网内的所有主机发送数据的方式。 任何一个网段最后一个地址就是广播的地址 例如&#xff1a;192.168.5.103主机发送广播信息&#xff0c;那么&#xff0c;广播地址为192.168.5.255 则192.168.5.1~192.168.5.254所有…

UDP广播

概述&#xff1a; 网络上的广播指&#xff1a;由一台主机向该主机所在子网内&#xff08;同一个局域网&#xff09;的所有主机发送数据的方式。实现广播&#xff0c;离不开广播地址&#xff0c;同一个子网&#xff08;局域网&#xff09;的所有主机网卡都会接收所在网段广播地…

四波混频/三波混频

四波混频 四波混频是由约瑟夫森电感的类克尔非线性引起的&#xff0c;满足 L J − 1 &#xff08; ϕ &#xff09; ≈ &#xff08; 1 − γ ′ ϕ 2 &#xff09; L J 0 − 1 L_J^{-1}&#xff08;\phi&#xff09;\approx&#xff08;1-\gamma\phi^2&#xff09;L_{J0}^{-1…

UDP之广播

目录 一.IP地址简介二.广播的实现原理三.广播的Server代码实现 1.setsockopt&#xff1a;给socketfd开放广播权限2.指定发送给Client的端口 说明&#xff1a;UDP广播的Server端为什么要指定Client的端口具体实现四.UDP之广播C/S模型五.UDP之广播C/S模型代码 ServerClient 一.IP…

用udp实现广播通信

特点&#xff1a; 1.数据传输不用建立连接&#xff0c;所以不可靠&#xff08;符合udp协议的特点&#xff09; 2.数据的发送是面向整个子网的&#xff0c;任何一台在子网内的计算机都可以接收到相同的数据&#xff1b; 3.广播用于udp和原始IP,不能用于TCP 用途&#xff1a; 1.定…

子域名接管劫持

什么是域名劫持&#xff1f; 域名劫持也被称为DNS劫持&#xff0c;它通过攻击域名解析服务器、伪造域名解析服务器的方法&#xff0c;拦截目标的域名解析请求&#xff0c;将目标网站域名解析到错误的地址上&#xff0c;让攻击目前无法回应访问。 子域名接管漏洞通常被滥用于以…

c++—继承、继承方式

1. c三大核心功能 &#xff08;1&#xff09;封装&#xff1a;提高代码的维护性&#xff0c;遇到问题可以准确定位&#xff1b; &#xff08;2&#xff09;继承&#xff1a;提高代码的复用性&#xff0c;注意不是ctrlc,ctrlv&#xff0c;而是不做任何修改或操作源码就能实现代码…