#include <myhead.h>
#define IP "192.168.125.255"
#define PORT 6789
int main(int argc, const char *argv[])
{
//广播接收端
//socket
int rfd=socket(AF_INET,SOCK_DGRAM,0);
if(rfd==-1)
{perror("socket");return -1;}
//bind
struct sockaddr_in rin;
rin.sin_family=AF_INET;
rin.sin_port=htons(PORT);
rin.sin_addr.s_addr=inet_addr(IP);
if(bind(rfd,(struct sockaddr*)&rin,sizeof(rin))==-1)
{perror("bind");return -1;}
//recvfrom
char rbuf[128];
while(1)
{ bzero(rbuf,sizeof(rbuf));
recvfrom(rfd,rbuf,sizeof(rbuf),0,NULL,NULL);
printf("收到的广播消息为:%s\n",rbuf);
}
//close
close(rfd);
return 0;
}
#include <myhead.h>
#define IP "192.168.125.255"
#define PORT 6789
int main(int argc, const char *argv[])
{
//广播发送端
//socket
int sfd=socket(AF_INET,SOCK_DGRAM,0);
if(sfd==-1)
{perror("socket");return -1;}
//setsockopt
int broadcast=1;
if(setsockopt(sfd,SOL_SOCKET\
,SO_BROADCAST,&broadcast,\
sizeof(broadcast))==-1)
{perror("broadcast");return -1;}
//recvfrom
struct sockaddr_in rin;
rin.sin_family=AF_INET;
rin.sin_port=htons(PORT);
rin.sin_addr.s_addr=inet_addr(IP);
char sbuf[128];
while(1)
{ printf("请输入>>>");
fgets(sbuf,sizeof(sbuf),stdin);
sbuf[strlen(sbuf)-1]=0;
sendto(sfd,sbuf,strlen(sbuf),0,\
(struct sockaddr*)&rin,sizeof(rin));
printf("发送成功\n");
}
//close
close(sfd);
return 0;
}
#include <myhead.h>
#define IP "224.1.1.1"
#define H_IP "192.160.125.220"
int main(int argc, const char *argv[])
{
//组播接收端
//socket
int rfd=socket(AF_INET,SOCK_DGRAM,0);
if(rfd==-1)
{perror("socket");return -1;}
//setsockopt
struct ip_mreqn imq;
imq.imr_multiaddr.s_addr=inet_addr(IP);
imq.imr_address.s_addr=inet_addr(H_IP);
imq.imr_ifindex=2;
if(setsockopt(rfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&imq,sizeof(imq))==-1)
{perror("setsockopt");return -1;}
printf("加入多播组成功\n");
//bind
struct sockaddr_in rin;
rin.sin_family=AF_INET;
rin.sin_port=htons(5555);
rin.sin_addr.s_addr=inet_addr(IP);
if(bind(rfd,(struct sockaddr*)&rin,sizeof(rin))==-1)
{perror("bind");return -1;}
//recvfrom
char rbuf[128];
while(1)
{ bzero(rbuf,sizeof(rbuf));
recvfrom(rfd,rbuf,sizeof(rbuf),0,NULL,NULL);
printf("收到组播消息:%s\n",rbuf);
}
//close
close(rfd);
return 0;
}
#include <myhead.h>
#define IP "224.1.1.1"
#define PORT 5555
int main(int argc, const char *argv[])
{
//组播发送端
//socket
int sfd=socket(AF_INET,SOCK_DGRAM,0);
if(sfd==-1)
{perror("socket");return -1;}
//recvfrom
struct sockaddr_in rin;
rin.sin_family=AF_INET;
rin.sin_port=htons(PORT);
rin.sin_addr.s_addr=inet_addr(IP);
char sbuf[128];
while(1)
{ printf("请输入>>>");
fgets(sbuf,sizeof(sbuf),stdin);
sbuf[strlen(sbuf)-1]=0;
sendto(sfd,sbuf,strlen(sbuf),0,\
(struct sockaddr*)&rin,sizeof(rin));
printf("发送成功\n");
}
//close
close(sfd);
return 0;}