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

📄 broad_client.c

📁 嵌入式Linux程序设计与应用案例 电子书源码 中国电力出版社
💻 C
字号:
/*************
//    name : broad_client.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>

int main()
{
    struct  sockaddr_in  sv_addr;
    int   sockfd;
    char  buf[1024];
    static  int so_reuseaddr = 1;
    int  z;
    
    /* 建立IPv4 地址,注意IP地址为广播地址 */
    bzero(&sv_addr, sizeof(sv_addr));
    sv_addr.sin_family = AF_INET;
    sv_addr.sin_addr.s_addr = inet_addr("192.168.1.255");	
	
    /* 建立socket */
    sockfd = socket();
    if(sockfd == -1)
    { perror("socket error"); exit(1);}

    /* 设置socket,让主机不同进程可以重新使用相同的IP地址及port */
    z = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR,
             &so_reuseaddr, sizeof(so_reuseaddr));
    if(z ==-1)
    { perror("setsockopt error"); exit(1);}
    
    /* 绑定socket*/
    
    z = bind(sockfd , (struct sockaddr *)&sv_addr, sizeof(sv_addr));
    if(z == -1)
    {
        perror("bind error"); exit(1);	
    }
    
    while(1)
    {
        int   i;
        socklen_t  j;
        
        /*接收来自server 的信息*/	
    	i = recvfrom(sockfd, buf, sizeof(buf), 0,
    	       (struct sockaddr *)&sv_addr, &j);
    	if (i<0)
    	{
    	    perror("recvfrom error"); exit(1);	
    	}
    	
    	buf[i] =0;
    	/* 若收到 stop字符串,结束与server 的选择 */
    	if(!strcasecmp(buf, "stop")) break;
    	/* 将收到的信息显示出来*/
    	printf("广播信息为 %s\n",buf);
    	
    	
    }
    close(sockfd);
    exit(0);
    

}

⌨️ 快捷键说明

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