//接收
static int sock_fd;
struct sockaddr_in recv_addr; //读取参数
struct sockaddr_in send_addr; //发送参数
sock_fd = socket(AF_INET, SOCK_DGRAM, 0);//申请一个读取网络套节字ID
if (sock_fd == -1) {
perror("socket");
return false;
}
// initialize address.
bzero(&recv_addr, sizeof(recv_addr));
recv_addr.sin_family = AF_INET;
recv_addr.sin_port = htons(3000);//接收3000端口数据
recv_addr.sin_addr.s_addr = htonl(INADDR_ANY);//监控IP地址
// bind the local port.
if ((bind(sock_fd, (struct sockaddr *)&recv_addr,sizeof(struct sockaddr_in))) == -1)
{
perror("bind");
return false;
}
return true;
char recv_buf[BUFFER_SIZE];//读取缓存申请
bzero(recv_buf, sizeof(recv_buf));
//等待接收函数
if ((recvfrom(sock_fd, recv_buf, sizeof(recv_buf), 0, (struct sockaddr *)&send_addr, &sizeof(struct sockaddr_in))) <= 0) {
perror("recvfrom");
}
//发送
struct sockaddr_in client_addr;
static int sock_fd1 = socket(AF_INET, SOCK_DGRAM, 0);//申请发送套节字
client_addr.sin_port=htons(3001);//发送端口
client_addr.sin_family=AF_INET;
int flag = 1;
char send_buf[BUFFER_SIZE];//发送缓存申请
bzero(send_buf, sizeof(send_buf));
send_buf[0]=0x30;
char *client_addrIP="192.168.2.255";//广播地址
inet_pton(AF_INET,client_addrIP,&client_addr.sin_addr);
//inet_aton(client_addr,&client_addr.sin_addr);
setsockopt(sock_fd1,SOL_SOCKET,SO_BROADCAST ,&flag,sizeof(flag));//配置广播参数,不然发不了
//间隔10ms发送100字节数据
while (1) {
if ((sendto(sock_fd1, send_buf, 100, 0,
(struct sockaddr *)&client_addr,
sizeof(struct sockaddr_in))) < 0) {
perror("sendto");
return (void*)-1;
}
send_buf[1]++;
usleep(10000);//休眠10ms
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)