CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何用VC实现接收广播数据包???

楼主Brierbird(荆棘鸟)2002-03-23 20:36:16 在 VC/MFC / 基础类 提问

3x 问题点数:40、回复次数:5Top

1 楼dash()回复于 2002-03-23 20:52:35 得分 20

我做过广播程序,  
  客户端发消息,服务端收到消息后,显示消息,关机等  
  可以给你Top

2 楼Brierbird(荆棘鸟)回复于 2002-03-23 23:06:09 得分 0

谢谢。你是真正意思上的广播吗?还仅仅是一个TCP/UDP的模式???我需要的真正意义上的。  
  yxming@263.net  
  Top

3 楼ju_feng(NorthSky)回复于 2002-03-23 23:18:43 得分 0

老兄,真正意义上的广播是什么??难道不是udp/ip吗?Top

4 楼Brierbird(荆棘鸟)回复于 2002-03-24 22:37:45 得分 0

基础当然是UDP,我说的意思是现在有些人常把建立一个C/S结构的程序,然后,C/S之间通过UDP通讯,S可以同时向几个C发消息,其实是一个对所以Accept了的socket进行的一对一的通讯。这就不叫广播(QQ的所谓广播也只是这种意义上的广播),Winsock中的广播是只需要发送一次。在其中sendto时,发送地址必须指定为IDADDR_BROADCAST.Top

5 楼involute(哼哼唧唧)回复于 2002-03-24 23:01:09 得分 20

//接收  
   
   
  #include   "stdafx.h"  
  #include   <stdio.h>  
  #include   <winsock.h>  
  #include   <conio.h>  
   
  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]   =   '\0';  
  printf("%s\n",cRecvBuff);  
   
  }  
  getch();  
  return   0;  
  }  
   
  //发送  
   
   
  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_INET,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("%s\n",sendBuff);  
  }  
  return   0;  
  }  
   
   
  Top

相关问题

  • 如何用asp接收XML数据包?
  • 数据包接收和发送问题
  • java.nio的DatagramChannel接收数据包问题
  • 如何向全网广播数据包?
  • winsock:如何接收较大的数据包
  • 谁知道如何接收被拆分的UDP数据包?
  • 怎样接收局域网内的所有数据包?
  • 用UDP发送接收数据包需要几个端口?
  • 请教:这台机器为什么接收不到数据包
  • 数据包接收不全的问题........大家帮我看看

关键词

  • 消息
  • socket
  • 广播
  • crecvbuff
  • socklistener
  • nbsize
  • saclient
  • 初始化
  • sin
  • nsize

得分解答快速导航

  • 帖主:Brierbird
  • dash
  • involute

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo