最后更新:2022-04-18 21:18:53 手机定位技术交流文章
通过《联合民主党通讯议定书》广播
UDP广播发送端
#include "myhead.h"
int main(int argc,char **argv)
{
int udpsock;
int ret;
char sbuf[100];
指定 IPv4 处理需要 IP 和 端口号约束的正文变量。
struct sockaddr_in bindaddr;
bzero(&bindaddr,sizeof(bindaddr));
bindaddr.sin_family=AF_INET;
我不知道你在说什么,sin_addr.s_addr=htonl(INADR_ANY);//Auto 匹配发件人的ip
我不确定 Binnddr. sin_port=htons (200) // 传送端口号 。
/ 保存 IPv4 地址的 IP 地址和 IP 端口号 。
struct sockaddr_in otheraddr;
bzero(&otheraddr,sizeof(otheraddr));
otheraddr.sin_family=AF_INET;
我不知道你指的是什么,其他addr.s_addr=inet_addr (),//我们的局域网地址
我不知道你指的是什么 其它的addr.sin_port=htons (300) / 端口号
做一个乌龟套接字
udpsock=socket(AF_INET,SOCK_DGRAM,0);
if(udpsock==-1)
{
校对:Portnoy
return -1;
}
消除港口约束性限制
int on=1;
setsockopt(udpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
//绑定
ret=bind(udpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
if(ret==-1)
{
""
return -1;
}
使插座属性可广播。
setsockopt(udpsock,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));
/ 向课堂上的所有主持人广播无线电信息
while(1)
{
bzero(sbuf,100);
"你在这里做什么?""
scanf("%s",sbuf);
sendto(udpsock,sbuf,strlen(sbuf),0,(struct sockaddr *)&otheraddr,sizeof(otheraddr));
}
//关闭
close(udpsock);
return 0;
}
UDP广播接收端
#include "myhead.h"
int main(int argc,char **argv)
{
int udpsock;
int ret;
char sbuf[100];
指定 IPv4 处理需要 IP 和 端口号约束的正文变量。
struct sockaddr_in bindaddr;
bzero(&bindaddr,sizeof(bindaddr));
bindaddr.sin_family=AF_INET;
我不知道你在说什么,Binnddr.s_addr=htonl(INADID_ANY);//自动匹配的接收端ip
我不确定 Binnddr. sin_port=htons (300);//收到港口号
/ 保存 IPv4 地址的 IP 地址和 IP 端口号 。
struct sockaddr_in otheraddr;
bzero(&otheraddr,sizeof(otheraddr));
int addrsize=sizeof(otheraddr);
做一个乌龟套接字
udpsock=socket(AF_INET,SOCK_DGRAM,0);
if(udpsock==-1)
{
校对:Portnoy
return -1;
}
消除港口约束性限制
int on=1;
setsockopt(udpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
//绑定
ret=bind(udpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
if(ret==-1)
{
""
return -1;
}
//接收广播信息
while(1)
{
bzero(sbuf,100);
recvfrom(udpsock,sbuf,100,0,(struct sockaddr *)&otheraddr,&addrsize);
prentf (“ip address:%s 端口号 :% hu 广播消息 :% sn”, inet_tenta (otheraddr.) 我不确定您指的是什么, sin_addr), nthohs (otheraddr.sbuf, (sin_port);
}
//关闭
close(udpsock);
return 0;
}
UDP通讯协议组播
UDP组播发送端
#include "myhead.h"
int main(int argc,char **argv)
{
int udpsock;
int ret;
char sbuf[100];
指定 IPv4 处理需要 IP 和 端口号约束的正文变量。
struct sockaddr_in bindaddr;
bzero(&bindaddr,sizeof(bindaddr));
bindaddr.sin_family=AF_INET;
我不知道你在说什么,sin_addr.s_addr=htonl(INADR_ANY);//Auto 匹配发件人的ip
我不确定 Binnddr. sin_port=htons (200) // 传送端口号 。
/ 保存 IPv4 地址的 IP 地址和 IP 端口号 。
struct sockaddr_in otheraddr;
bzero(&otheraddr,sizeof(otheraddr));
otheraddr.sin_family=AF_INET;
我不知道你们在说什么,其他的,我不知道你们在说什么,sin_addr.s_addr=ind_addr(”);//我选择小组地址。
我不知道你指的是什么 其它的addr.sin_port=htons (300) / 端口号
做一个乌龟套接字
udpsock=socket(AF_INET,SOCK_DGRAM,0);
if(udpsock==-1)
{
校对:Portnoy
return -1;
}
消除港口约束性限制
int on=1;
setsockopt(udpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
//绑定
ret=bind(udpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
if(ret==-1)
{
""
return -1;
}
使插座属性可广播。
setsockopt(udpsock,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));
/ 向添加到I组定义中的机器发送信息。
while(1)
{
bzero(sbuf,100);
你在这里做什么? "你在这里做什么?" ""你""在这里""你"在这里做什么?""你""你"在这里""你"在这里""你"做什么" "你""
scanf("%s",sbuf);
sendto(udpsock,sbuf,strlen(sbuf),0,(struct sockaddr *)&otheraddr,sizeof(otheraddr));
}
//关闭
close(udpsock);
return 0;
}
UDP组播接收端
#include "myhead.h"
int main(int argc,char **argv)
{
int udpsock;
int ret;
char sbuf[100];
指定 IPv4 处理需要 IP 和 端口号约束的正文变量。
struct sockaddr_in bindaddr;
bzero(&bindaddr,sizeof(bindaddr));
bindaddr.sin_family=AF_INET;
我不知道你在说什么,Binnddr.s_addr=htonl(INADID_ANY);//自动匹配的接收端ip
我不确定 Binnddr. sin_port=htons (300);//收到港口号
/ 保存 IPv4 地址的 IP 地址和 IP 端口号 。
struct sockaddr_in otheraddr;
bzero(&otheraddr,sizeof(otheraddr));
int addrsize=sizeof(otheraddr);
做一个乌龟套接字
udpsock=socket(AF_INET,SOCK_DGRAM,0);
if(udpsock==-1)
{
校对:Portnoy
return -1;
}
消除港口约束性限制
int on=1;
setsockopt(udpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
//绑定
ret=bind(udpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
if(ret==-1)
{
""
return -1;
}
/ 添加到发件人指定的广播组
sruct ip_mreq Mreq; / 结构变量定义保留群集信息
bzero(&mreq, sizeof(mreq));
对不起,先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生, 先生。 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道, 我不知道,
(d) //必须用这一宏加以具体说明;
setsockopt(udpsock, IPPROTO_IP, IP_ADD_MEMBERSHIP,&mreq, sizeof(mreq)); //把这个主机添加到组播组里面
//接收组播信息
while(1)
{
bzero(sbuf,100);
recvfrom(udpsock,sbuf,100,0,(struct sockaddr *)&otheraddr,&addrsize);
prentf (“ip address:%s 端口号 :% hu 广播消息 :% sn”, inet_tenta (其他addr.). 我不确定您指的是什么, sin_addr), nthohs (其他addr.sbuf, (sin_port);
}
//关闭
close(udpsock);
return 0;
}
本文由 在线网速测试 整理编辑,转载请注明出处。