1.机械臂
2.思维导图
3.广播代码
#include <myhead.h>
#define IP "192.168.125.255"
#define PORT 5555
int main(int argc, const char *argv[])
{
//创建发送套接字文件
int fd = socket(AF_INET,SOCK_DGRAM,0);
if (fd == -1)
{
perror("socket");
return -1;
}
//设置套接字为广播模式
int broadcast = 1;
if (setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&broadcast,sizeof(broadcast)) == -1)
{
perror("broadcast");
return -1;
}
printf("set broadcast pattern success\n");
//设置对端地址
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(fd,sbuf,strlen(sbuf),0,(struct sockaddr*)&rin,sizeof(rin));
printf("发送成功\n");
}
close(fd);
return 0;
}
#include <myhead.h>
#define IP "192.168.125.255"
#define PORT 5555
int main(int argc, const char *argv[])
{
//创建接收套接字文件
int fd = socket(AF_INET,SOCK_DGRAM,0);
if (fd == -1)
{
perror("socket");
return -1;
}
//设置对端地址
struct sockaddr_in rin;
rin.sin_family = AF_INET;
rin.sin_port = htons(PORT);
rin.sin_addr.s_addr = inet_addr(IP);
//绑定地址信息
if (bind(fd,(struct sockaddr*)&rin,sizeof(rin)) == -1)
{
perror("bind");
return -1;
}
printf("bind success");
char rbuf[128] = "";
while (1)
{
memset(rbuf,0,sizeof(rbuf));
recvfrom(fd,rbuf,sizeof(rbuf),0,NULL,NULL);
printf("收到广播消息:%s\n",rbuf);
}
close(fd);
return 0;
}
4.组播
int main(int argc, const char *argv[])
{
//创建套接字
int fd = socket(AF_INET,SOCK_DGRAM,0);
if (fd == -1)
{
perror("socket");
return -1;
}
//设置组播地址信息
struct ip_mreqn imq;
imq.imr_multiaddr.s_addr = inet_addr("224.1.1.1");
imq.imr_address.s_addr = inet_addr("192.168.125.228");
imq.imr_ifindex = 2;
//修改套接字属性为组播
if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&imq,sizeof(imq)) == -1)
{
perror("setsockopt");
return -1;
}
printf("加入多播成功\n");
//设置对端地址信息
struct sockaddr_in rin;
rin.sin_family = AF_INET;
rin.sin_port = htons(5555);
rin.sin_addr.s_addr = inet_addr("224.1.1.1");
//绑定
if (bind(fd,(struct sockaddr*)&rin,sizeof(rin)) == -1)
{
perror("bind");
return -1;
}
char rbuf[128] = "";
while (1)
{
bzero(rbuf,sizeof(rbuf));
recvfrom(fd,rbuf,sizeof(rbuf),0,NULL,NULL);
printf("收到组播消息:%s\n",rbuf);
}
close(fd);
return 0;
}
int main(int argc, const char *argv[])
{
//创建套接字
int fd = socket(AF_INET,SOCK_DGRAM,0);
if (fd == -1)
{
perror("socket");
return -1;
}
//设置对端地址信息
struct sockaddr_in rin;
rin.sin_family = AF_INET;
rin.sin_port = htons(5555);
rin.sin_addr.s_addr = inet_addr("224.1.1.1");
char wbuf[128] = "";
while (1)
{
printf("请输入>>>");
fgets(wbuf,sizeof(wbuf),stdin);
wbuf[strlen(wbuf)-1] = '\0';
sendto(fd,wbuf,strlen(wbuf),0,(struct sockaddr*)&rin,sizeof(rin));
printf("发送成功\n");
}
close(fd);
return 0;
}