发送广播的示例代码

功能:客户端向广播地址发送信息

//server.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip.h>
       #include <arpa/inet.h>
int main(int argc,char *argv[])
{
	int sockfd = socket(AF_INET,SOCK_DGRAM,0);
	if(sockfd<0){
		perror("socket");
		exit(-1);
	}
	struct sockaddr_in saddr;
	saddr.sin_family=AF_INET;
	saddr.sin_port= htons(8888);
	saddr.sin_addr.s_addr=INADDR_ANY;
	int s_len=sizeof(saddr);
	int ret = bind(sockfd,(struct sockaddr *)&saddr,s_len);
	if(ret<0){
		perror("bind");
		exit(-2);
	}
	struct sockaddr_in caddr;
	memset(&caddr,0,sizeof(caddr));
	int c_len=sizeof(caddr);
	char buf[64];
	while(1){
		memset(buf,0,64);
		recvfrom(sockfd,buf,64,0,(struct sockaddr *)&caddr,&c_len);
		printf("ip: -- %s   :  %s",inet_ntoa(caddr.sin_addr), buf);
	}
	close(sockfd);

    	return 0;
}
//client.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip.h>
       #include <arpa/inet.h>
int main(int argc,char *argv[])
{
	int sockfd=socket(AF_INET,SOCK_DGRAM,0);
	if(sockfd<0){
		perror("socket");
		exit(-1);
	}	
	struct sockaddr_in saddr;
	saddr.sin_family=AF_INET;
	saddr.sin_addr.s_addr=inet_addr("192.168.12.255");
	saddr.sin_port=htons(8888);
	int s_len=sizeof(saddr);
	int allow=1;
	setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&allow,sizeof(allow));
	char buf[64];
	while(1){
		memset(buf,0,64);
		fgets(buf,64,stdin);
		int size = sendto(sockfd,buf,64,0,(struct sockaddr*)&saddr,s_len);
		printf("send %d\n",size);
	
	}
	close(socket);
    	return 0;

}