发送广播的示例代码
功能:客户端向广播地址发送信息
//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;
}