SOCKET实现广播(BoardCast)的发送和接收 (转)
这两天很多人在问怎么样用SOCKET实现广播(BoardCast)
正好我做过这方面的程序,这里用最简单的代码写一个广播发送和接受的例子:
//
//发送端程序
#include
#include
int main(int argc, char* argv[])
{
WSADATA wsaData; //指向WinSocket信息结构的指针
SOCKET sockListener;
SOCKADDR_IN sin,saUdpServ;
BOOL fBroadcast = TRUE;
char sendbuff[1024];
int nSize;
int ncount=0;
if(WSAStartup(MAKEword( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化
{
printf("Can't initiates windows socket!Program stop.n");//初始化失败返回-1
return -1;
}
sockListener=socket(PF_.NET,SOCK_DGRAM,0);
setsockopt ( sockListener,SOL_SOCKET,SO_BROADCAST,
(CHAR *)&fBroadcast,sizeof ( BOOL ));
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind( sockListener, (SOCKADDR *)&sin, sizeof(sin))!=0)
{
printf("Can't bind socket to local port!Program stop.n");//初始化失败返回-1
return -1;
}
saUdpServ.sin_family = AF_INET;
saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST );
saUdpServ.sin_port = htons (7001);//发送用的端口,可以根据需要更改
nSize = sizeof ( SOCKADDR_IN );
while(1)
{
sprintf(sendBuff,"Message %d",ncount++);
sendto ( sockListener,sendBuff,
lstrlen (sendBuff),
0,
(SOCKADDR *) &saUdpServ,
sizeof ( SOCKADDR_IN ));
printf("%sn",sendBuff);
}
return 0;
}
/
//接收
#include
#include
#include
int main(int argc, char* argv[])
{
WSADATA wsaData; //指向WinSocket信息结构的指针
SOCKET sockListener;
SOCKADDR_IN sin,saClient;
char cRecvBuff[1024];
int nSize,nbSize;
int iAddrLen=sizeof(saClient);
if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化
{
printf("Can't initiates windows socket!Program stop.n");//初始化失败返回-1
return -1;
}
sockListener=socket(AF_INET, SOCK_DGRAM,0);
sin.sin_family = AF_INET;
sin.sin_port = htons(7001);//发送端使用的发送端口,可以根据需要更改
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind( sockListener, (SOCKADDR FAR *)&sin, sizeof(sin))!=0)
{
printf("Can't bind socket to local port!Program stop.n");//初始化失败返回-1
return -1;
}
while(1)
{
nSize = sizeof ( SOCKADDR_IN );
if((nbSize=recvfrom (sockListener,cRecvBuff,1024,0,
(SOCKADDR FAR *) &saClient,&nSize))==SOCKET_ERROR)
{
printf("Recive Error");
break;
}
cRecvBuff[nbSize] = '';
printf("%sn",cRecvBuff);
}
return 0;
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-992490/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-992490/
SOCKET实现广播(BoardCast)的发送和接收 (转)相关推荐
- 25. Python语言 Web 开发 之 Socket 编程 · 第一章 UDP发送与接收数据
UDP发送与接收数据 本章主题 关键词 前导: 计算机网络的发展及基础网络概念 两台电脑的通信 IP地址介绍及分类 IP地址与IP协议 Windows 和 Linux 查看网卡信息 IP地址分类 以太 ...
- PHP+socket+SMTP、POP3协议发送、接收邮件
1.实现SMTP协议的类dsmtp.cls.php: <?php // 通过socket实现SMTP协议的功能 // version: 1.1 // author : DC ...
- Boardcast Receiver 源码分析:广播的动态注册、发送和接收过程
文章目录 动态注册过程 ContextWrapper#registerReceiver(以下代码基于API26) ContextImpl#registerReceiver ContextImpl#re ...
- 使用DatagramSocket发送、接收数据(Socket之UDP套接字)
2019独角兽企业重金招聘Python工程师标准>>> 创建一个DatagramSocket实例,并将该对象绑定到指定IP地址.指定端口. 通过上面三个构造器中的任意一个构造器即可创 ...
- python 网络编程之Socket通信案例消息发送与接收
背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...
安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程? 详细代码介 ...
- python socket发送组播数据_python3通过udp实现组播数据的发送和接收操作
本文主要通过对海康摄像头进行抓包,模拟发送了udp包,并抓取摄像头返回的数据包,解析并提取相关信息. 通过抓包发现,海康摄像头发送.接收数据使用udp协议,后来比较发现,使用python模拟起来比较简 ...
- Android深入四大组件(八)广播的注册、发送和接收过程
前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...
- Udp广播的发送和接收(iOS + AsyncUdpSocket)下篇
接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 ...
最新文章
- Virtual PC磁盘的最佳压缩方式
- [mysql] 常用命令二
- HDU2594——Simpsons’ Hidden Talents
- springboot+druid+mybatis-Plus 配置详解
- PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决
- Spring Aware容器感知技术
- DPM 2007SRT及DPM 2010 BMR祼金属还原总结
- HIbernate实现增、删、改、查。
- 数据挖掘工具软件Weka学习教程
- 神经进化学的简介和一个简单的CPPN(Compositional Pattern Producing Networks)DEMO
- 国际开源固件基金会 (OSFF)组织
- html 滑动导航效果,jQuery实现的滑块滑动导航效果示例
- 怎么将webm格式转换为mp4
- jmeter访问网址
- 【实践*感悟】程序员的品质
- 巧用foxmail同步qq邮箱的通讯录
- 如何将小车标注在百度地图上并且设置车头方向
- 配置ntp客户端与服务器端时间的同步
- 1、用Keil5开发TM4C123G单片机的软件准备
- 安装过程中弹出错误信息,Xshell4提示nslicense.dll无法安装成功
热门文章
- 有关三年级计算机课的日记,今天的自习课三年级日记
- ​如何成为一个成功的自由程序员?
- 【转】操作系统Unix、Windows、Mac OS、Linux的故事
- 阿里妈妈称日均覆盖人数破7000万
- 看完315晚会,我们的数据隐私谁来保护?
- 天耀18期 -09.数组-排序【作业】.doc
- 微信公众号 多台服务器,在多台 Linux 服务器上搭建 Pulsar 集群
- 如何在ps中添加图片上的塑料布效果
- 4G模块加网流程_4G拨号上网相关知识
- 多级延迟效果器:D16 Group Tekturon for Mac()