SOCKET实现广播(BoardCast)的发送和接收 (转)[@more@]

这两天很多人在问怎么样用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)的发送和接收 (转)相关推荐

  1. 25. Python语言 Web 开发 之 Socket 编程 · 第一章 UDP发送与接收数据

    UDP发送与接收数据 本章主题 关键词 前导: 计算机网络的发展及基础网络概念 两台电脑的通信 IP地址介绍及分类 IP地址与IP协议 Windows 和 Linux 查看网卡信息 IP地址分类 以太 ...

  2. PHP+socket+SMTP、POP3协议发送、接收邮件

    1.实现SMTP协议的类dsmtp.cls.php: <?php            // 通过socket实现SMTP协议的功能 // version: 1.1 // author : DC ...

  3. Boardcast Receiver 源码分析:广播的动态注册、发送和接收过程

    文章目录 动态注册过程 ContextWrapper#registerReceiver(以下代码基于API26) ContextImpl#registerReceiver ContextImpl#re ...

  4. 使用DatagramSocket发送、接收数据(Socket之UDP套接字)

    2019独角兽企业重金招聘Python工程师标准>>> 创建一个DatagramSocket实例,并将该对象绑定到指定IP地址.指定端口. 通过上面三个构造器中的任意一个构造器即可创 ...

  5. python 网络编程之Socket通信案例消息发送与接收

    背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...

  6. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程?  详细代码介 ...

  7. python socket发送组播数据_python3通过udp实现组播数据的发送和接收操作

    本文主要通过对海康摄像头进行抓包,模拟发送了udp包,并抓取摄像头返回的数据包,解析并提取相关信息. 通过抓包发现,海康摄像头发送.接收数据使用udp协议,后来比较发现,使用python模拟起来比较简 ...

  8. Android深入四大组件(八)广播的注册、发送和接收过程

    前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...

  9. Udp广播的发送和接收(iOS + AsyncUdpSocket)下篇

    接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 ...

最新文章

  1. Virtual PC磁盘的最佳压缩方式
  2. [mysql] 常用命令二
  3. HDU2594——Simpsons’ Hidden Talents
  4. springboot+druid+mybatis-Plus 配置详解
  5. PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决
  6. Spring Aware容器感知技术
  7. DPM 2007SRT及DPM 2010 BMR祼金属还原总结
  8. HIbernate实现增、删、改、查。
  9. 数据挖掘工具软件Weka学习教程
  10. 神经进化学的简介和一个简单的CPPN(Compositional Pattern Producing Networks)DEMO
  11. 国际开源固件基金会 (OSFF)组织
  12. html 滑动导航效果,jQuery实现的滑块滑动导航效果示例
  13. 怎么将webm格式转换为mp4
  14. jmeter访问网址
  15. 【实践*感悟】程序员的品质
  16. 巧用foxmail同步qq邮箱的通讯录
  17. 如何将小车标注在百度地图上并且设置车头方向
  18. 配置ntp客户端与服务器端时间的同步
  19. 1、用Keil5开发TM4C123G单片机的软件准备
  20. 安装过程中弹出错误信息,Xshell4提示nslicense.dll无法安装成功

热门文章

  1. 有关三年级计算机课的日记,今天的自习课三年级日记
  2. ​如何成为一个成功的自由程序员?
  3. 【转】操作系统Unix、Windows、Mac OS、Linux的故事
  4. 阿里妈妈称日均覆盖人数破7000万
  5. 看完315晚会,我们的数据隐私谁来保护?
  6. 天耀18期 -09.数组-排序【作业】.doc
  7. 微信公众号 多台服务器,在多台 Linux 服务器上搭建 Pulsar 集群
  8. 如何在ps中添加图片上的塑料布效果
  9. 4G模块加网流程_4G拨号上网相关知识
  10. 多级延迟效果器:D16 Group Tekturon for Mac()