广播 UDP 发送与接收

发送方:

/*===============================================
 *   文件名称: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://my.lmcjl.com/post/9626.html

展开阅读全文

4 评论

留下您的评论.