⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 broad_servo.c

📁 嵌入式Linux程序设计与应用案例 电子书源码 中国电力出版社
💻 C
字号:
/*************
//    name : broad_servo.c
//    author : pyy
//    date  : 2007-11-26
************/

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<time.h>
#include<signal.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>


/* 随机产生1-6数的函数*/
void test(int count, char *buf)
{
    int i;
    srand((int)time(0));
    i = (rand() % 6) +1;
    sleep(2);
    sprintf(buf, "次数为:%d 值为: %d",count, i);	
}

int  main()
{
    struct  sockaddr_in  sv_addr, bc_addr;
    int  sockfd;
    static  int  so_broadcast = 1;
    char  buf[1024];
    int   z, i;
    /*建立IPv4地址*/	
    bzero(&sv_addr,sizeof(sv_addr));
    sv_addr.sin_family = AF_INET;
    sv_addr.sin_port = htons(8001);
    sv_addr.sin_addr.s_addr = inet_addr("192.168.1.20");	

    /*建立广播地址*/	
    bzero(&bc_addr, sizeof(bc_addr));
    
    bc_addr.sin_family = AF_INET;
    bc_addr.sin_port   = htons(8000);
    bc_addr.sin_addr.s_addr = inet_add("192.168.1.255");

    /*建立 socket */
    sockfd = socket();
    if(sockfd == -1)
    {
        perror("socket error");  exit(1);	
    }
    
    /*设置socket ,让主机具有广播功能*/
    z = setsockopt();
    if(z == -1)
    {
        perror("setsockopt error"); exit(1);	
    }
    
    /* 绑定socket*/
     z = bind(sockfd, (struct sockaddr *)&sv_addr,sizeof(sv_addr));
     if(z == -1)
     {
        perror("setsockopt error"); exit(1);     	
     }    
    
     printf();
     /* 将20笔信息广播给Client 端 */
     for(i=0; i<20; i++)
     {
         test(i,buf);
         printf("%s \n",buf);
         z = sendto(sockfd, buf, strlen(buf)+1,0,
         (struct sockaddr *)&bc_addr, sizeof(bc_addr));
         
         if(z <0) { perror("sendto error");}	
     }
    
     /*将stop字符串传给Client*/
     sprintf( buf, "stop");
     z = sendto(sockfd, buf, strlen(buf)+1, 0,
           (struct  sockaddr *)&bc_addr, sizeof(bc_addr));
     if(z < 0)
     {
         perror("sendto error"); exit(1);
     }
   
     printf("广播Server 停止......\n");
     close(sockfd);
     exit(0);

	
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -