1>思维导图
2>广播
#include<myhead.h>
int main(int argc, const char *argv[])
{
//1、创建套接字
int sfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sfd == -1)
{
perror("socket error");
return -1;
}
//2、将套接字设置成允许广播
int broadcast = 1;
if(setsockopt(sfd, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast))==-1)
{
perror("setsockopt error");
return -1;
}
//3、绑定(非必须)
//4、填充接收端地址信息结构体
struct sockaddr_in cin;
cin.sin_family = AF_INET;
cin.sin_port = htons(6789);
cin.sin_addr.s_addr = inet_addr("192.168.125.255");
//5、发送消息
char sbuf[128] = "";
while(1)
{
printf("请输入>>>");
fgets(sbuf, sizeof(sbuf), stdin);
sbuf[strlen(sbuf)-1] = 0;
//发送到广播地址中
sendto(sfd, sbuf, sizeof(sbuf), 0, (struct sockaddr*)&cin, sizeof(cin));
printf("发送成功\n");
}
//6、关闭套接字
close(sfd);
return 0;
}
3>组播
#include<myhead.h>
int main(int argc, const char *argv[])
{
//1、创建套接字
int sfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sfd == -1)
{
perror("socket error");
return -1;
}
//2、绑定 非必须
//3、填充地址信息结构体
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(9999);
sin.sin_addr.s_addr = inet_addr("224.1.2.3");
//4、发送消息
char sbuf[128] = "";
while(1)
{
printf("请输入>>>");
fgets(sbuf, sizeof(sbuf), stdin);
sbuf[strlen(sbuf)-1] = 0;
//将消息发送出去
sendto(sfd, sbuf, sizeof(sbuf), 0, (struct sockaddr*)&sin, sizeof(sin));
printf("发送成功\n");
}
//5、关闭套接字
close(sfd);
return 0;
}