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

高分求使用SOCKET API实现组播与广播的方法和源码.up,gz有分.

楼主wuxuan(真心英雄)2002-09-11 15:44:16 在 VC/MFC / 基础类 提问

如何使用SOCKET   API来实现组播与广播.  
  问题点数:200、回复次数:56Top

1 楼nanjianhui(nan)回复于 2002-09-11 15:51:06 得分 80

留下email,我给你发过去!!!Top

2 楼fly_bird([阿弥陀佛])回复于 2002-09-11 15:59:23 得分 8

我也要,如何在一个程序里,实现UDP的广播何接受。  
  将另开贴给分  
  sjeclay@163.comTop

3 楼black_fox(天堂隔壁)回复于 2002-09-11 15:59:54 得分 20

http://www.codeguru.com/network/MulticastSocket.shtml  
   
  这有一个组播的类Top

4 楼nanjianhui(nan)回复于 2002-09-11 16:04:20 得分 0

to   fly_bird:  
          我已经给你发了,看看吧!!!Top

5 楼wuxuan(真心英雄)回复于 2002-09-11 16:07:00 得分 0

谢谢,我一定给重分.  
  purenet@163.comTop

6 楼nanjianhui(nan)回复于 2002-09-11 16:13:39 得分 0

to   wuxuan:  
        我已经给你发了,请查收!!!Top

7 楼fly_bird([阿弥陀佛])回复于 2002-09-11 16:17:47 得分 0

nanjianhui(nan)    
   
  我将另开贴给分!  
  请关注!Top

8 楼fly_bird([阿弥陀佛])回复于 2002-09-11 16:21:10 得分 0

下面的代码为何不能接受呢?发肯定没有问题的了!可怎么不能接受呢?  
   
  创建套接字:                    
                    int   Sockfd;  
  sockaddr_in   hostip;  
  Sockfd=socket(AF_INET,SOCK_DGRAM,0);  
  if(Sockfd==INVALID_SOCKET){  
  AfxMessageBox("创建套接口失败!");  
  }  
  hostip.sin_family=AF_INET;  
  hostip.sin_addr.s_addr=INADDR_ANY;  
  hostip.sin_port=htons(12180);  
  bool   optval=TRUE;  
  setsockopt(Sockfd,SOL_SOCKET,SO_REUSEADDR,(char   FAR   *)&optval,sizeof(optval));  
  if(bind(Sockfd,(struct   sockaddr   *)&hostip,sizeof(hostip))==SOCKET_ERROR){  
  AfxMessageBox("主机绑定错误!");  
  }  
  if(setsockopt(Sockfd,SOL_SOCKET,SO_BROADCAST,(char   FAR   *)&optval,sizeof(optval))==SOCKET_ERROR){  
  AfxMessageBox("广播通信设置产生错误!");  
  }  
  发送消息:  
                    sockaddr_in   destip;  
  int   state;  
  destip.sin_family=AF_INET;  
  destip.sin_addr.s_addr=INADDR_BROADCAST;  
  destip.sin_port=htons(12181);  
  if(state=sendto(sock,(char   *)buffer,buffersize,0,(struct   sockaddr   *)&destip,sizeof(destip))==SOCKET_ERROR){  
  AfxMessageBox("数据发送失败");  
  }  
  接收消息:  
  int   state;  
                    sockaddr   *sa;  
                    int   salen;  
                    char   buffer[15];  
                    int   buffersize;  
                    buffersize=15;  
  if(state=recvfrom(sock,(char   *)buffer,buffersize,0,sa,&salen)==SOCKET_ERROR){  
  AfxMessageBox("数据接收失败");  
  }  
  关闭套接字:  
  closesocket(sock);  
  Top

9 楼liuyup(天煞)回复于 2002-09-11 16:25:08 得分 2

gzTop

10 楼wuxuan(真心英雄)回复于 2002-09-11 16:59:50 得分 0

这是一个多播的类,大家可以看看.  
  http://www.codeproject.com/internet/multicastsocket.aspTop

11 楼liuwei662656(天堂)回复于 2002-09-11 17:42:45 得分 2

同志,我也想要一个可以吗?  
   
  liuwei662656@etang.com  
  ================================================================  
   
  CSDN   论坛助手   Ver   1.0   B0402提供下载。   改进了很多,功能完备!  
   
  ★     浏览帖子速度极快![建议系统使用ie5.5以上]。   ★     多种帖子实现界面。    
  ★     保存帖子到本地[html格式]★     监视您关注帖子的回复更新。  
  ★     可以直接发贴、回复帖子★     采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!    
  ★     支持在线检测程序升级情况,可及时获得程序更新的信息。  
   
  ★★   签名     ●      
            可以在您的每个帖子的后面自动加上一个自己设计的签名哟。  
   
  Http://www.ChinaOK.net/csdn/csdn.zip  
  Http://www.ChinaOK.net/csdn/csdn.rar  
  Http://www.ChinaOK.net/csdn/csdn.exe         [自解压]  
   
  Top

12 楼liuwei662656(天堂)回复于 2002-09-11 17:43:25 得分 0

同志,我也想要一个可以吗?  
   
  liuwei662656@etang.com  
  ================================================================  
   
  CSDN   论坛助手   Ver   1.0   B0402提供下载。   改进了很多,功能完备!  
   
  ★     浏览帖子速度极快![建议系统使用ie5.5以上]。   ★     多种帖子实现界面。    
  ★     保存帖子到本地[html格式]★     监视您关注帖子的回复更新。  
  ★     可以直接发贴、回复帖子★     采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!    
  ★     支持在线检测程序升级情况,可及时获得程序更新的信息。  
   
  ★★   签名     ●      
            可以在您的每个帖子的后面自动加上一个自己设计的签名哟。  
   
  Http://www.ChinaOK.net/csdn/csdn.zip  
  Http://www.ChinaOK.net/csdn/csdn.rar  
  Http://www.ChinaOK.net/csdn/csdn.exe         [自解压]  
   
  Top

13 楼chenm001(CM)回复于 2002-09-11 17:56:26 得分 10

多播很简单的,核心代码如下(接收部分)  
   
        Remote.sin_family=AF_INET;  
          Remote.sin_port=htons(MCASTPORT);  
          Remote.sin_addr.s_addr=inet_addr(MCASTADDR);  
          if((SockM=WSAJoinLeaf(Sock,(sockaddr*)&Remote,sizeof(Remote),  
                                                      NULL,NULL,NULL,NULL,JL_BOTH))==INVALID_SOCKET)   {  
                  closesocket(Sock);  
                  WSACleanup();  
                  return(-3);  
          }  
   
          //WSAAsyncSelect(Sock,Handle,WM_SOCK_MSG,FD_READ|FD_WRITE|FD_CLOSE);  
   
          Length=recvfrom(Sock,RecvBuf,BUFSIZE,0,   (sockaddr*)&From,&dwFrom);  
   
  Top

14 楼chenm001(CM)回复于 2002-09-11 17:59:33 得分 0

忘了说了,上面的Sock也是一个UDP   SOCKET,用来接收用的,SOCKM用来发送Top

15 楼sunyou(砂子)回复于 2002-09-12 14:00:42 得分 2

请给我一份  
  sunyou@etang.comTop

16 楼pzhou(笑猪)回复于 2002-09-12 14:56:39 得分 2

gzTop

17 楼mengxihe(濛溪河)回复于 2002-09-12 14:57:37 得分 2

up  
  gzTop

18 楼rocshaw(太阳鸟(抵制日货))回复于 2002-09-12 15:04:20 得分 2

upTop

19 楼coolc(石头里的魔)回复于 2002-09-12 15:29:33 得分 2

关注,  
  多谢各位Top

20 楼shaohua(流氓大亨文盲高官)回复于 2002-09-12 17:32:33 得分 2

能给我一份吗?我也愿意给分!!!  
   
  thanks.  
   
  itwxf@student.hunnu.edu.cn  
  Top

21 楼mucel(尽力尽为)回复于 2002-09-12 22:03:15 得分 2

请给我一份  
  molosam@263.netTop

22 楼learnerX(null)回复于 2002-09-12 22:04:10 得分 2

GZTop

23 楼hdsw21st(云淡风清)回复于 2002-09-13 00:23:36 得分 2

up!Top

24 楼hdsw21st(云淡风清)回复于 2002-09-13 00:24:45 得分 0

hdsw21st@sohu.com  
  Top

25 楼happynow(辉)回复于 2002-09-13 00:55:03 得分 2

up!Top

26 楼ln_changcheng(恶人魔)回复于 2002-09-13 09:28:51 得分 2

gz+up!!!Top

27 楼xiaopan()回复于 2002-09-13 09:59:12 得分 2

yym1320@163.com  
  thanks!Top

28 楼winthegame(120斤重的大青蛙)回复于 2002-09-13 10:12:12 得分 2

gzTop

29 楼wuxuan(真心英雄)回复于 2002-09-13 10:18:16 得分 0

如果大家感兴趣的话,请留下EMAIL,我整理一下大家的发言然后发送给大家Top

30 楼cococut(小鱼的天空)回复于 2002-09-13 10:36:59 得分 2

cococut@msn.comTop

31 楼aben456(金珠MERP)回复于 2002-09-13 10:40:10 得分 2

wangbj@snm.szptt.net.cn  
  多谢!Top

32 楼cunni(有谁见过彼得.潘)回复于 2002-09-13 10:47:04 得分 2

dongy@cbn.com.cn     多谢!Top

33 楼Chiun(青竹篱)回复于 2002-09-13 11:16:58 得分 2

rosa@infoking.com.cn   多谢!  
  Top

34 楼guzh()回复于 2002-09-13 12:19:09 得分 2

guzh@21cn.com  
   
  谢谢!!!Top

35 楼seculr(seculr)回复于 2002-09-13 13:33:32 得分 2

seculr@163.comTop

36 楼arvid_gs(west)回复于 2002-09-13 13:39:43 得分 2

arvid_gs@163.com  
  给我一份!!!Top

37 楼anyoshon(好学)回复于 2002-09-13 13:42:08 得分 2

不错,多谢!!!  
   
  aneicou@hotmail.comTop

38 楼yan_zg()回复于 2002-09-13 13:42:43 得分 2

yanzg1496@sina.com.cn  
   
  多谢  
  Top

39 楼Vc_God(上帝)回复于 2002-09-13 15:23:35 得分 2

superaf@163.com    
  谢谢!Top

40 楼hash_boy(Berserker)回复于 2002-09-13 15:46:18 得分 2

我要一份,谢谢。  
    cuiy@cbn.com.cnTop

41 楼flybusflybus(风)回复于 2002-09-13 16:41:59 得分 2

flybus@163.net  
   
  thx~  
  Top

42 楼jtg98g3(跳舞的青蛙)回复于 2002-09-13 17:36:32 得分 2

我也想要:qinwa588@163.com  
  Top

43 楼guiqing(坐行八万里)回复于 2002-09-13 22:07:16 得分 2

我也想要:doublege@sina.comTop

44 楼tonycxy()回复于 2002-09-13 22:20:55 得分 2

我也想要一个,tonycxy@yeah.netTop

45 楼JennyVenus()回复于 2002-09-13 22:21:43 得分 2

//   取得网卡列表  
  LANA_ENUM   AdapterList;  
  NCB   Ncb;  
   
  memset(&Ncb,   0,   sizeof(NCB));  
  Ncb.ncb_command   =   NCBENUM;  
  Ncb.ncb_buffer   =   (unsigned   char   *)&AdapterList;  
  Ncb.ncb_length   =   sizeof(AdapterList);  
  Netbios(&Ncb);  
   
  //   重置网卡,以便我们可以查询  
  memset(&Ncb,   0,   sizeof(Ncb));  
  Ncb.ncb_command   =   NCBRESET;  
  Ncb.ncb_lana_num   =   AdapterList.lana[0];  
  if   (Netbios(&Ncb)   !=   NRC_GOODRET)   {  
  return   false;  
  }  
   
  //   准备取得接口卡的状态块  
  bzero(&Ncb,sizeof(Ncb));  
  Ncb.ncb_command   =   NCBASTAT;  
  Ncb.ncb_lana_num   =   AdapterList.lana[0];  
  strcpy((char   *)   Ncb.ncb_callname,   "*");  
  struct   ASTAT  
  {  
  ADAPTER_STATUS   adapt;  
  NAME_BUFFER   NameBuff[30];  
  }   Adapter;  
  bzero(&Adapter,   sizeof(Adapter));  
  Ncb.ncb_buffer   =   (unsigned   char   *)&Adapter;  
  Ncb.ncb_length   =   sizeof(Adapter);  
   
  //   取得网卡的信息,并且如果网卡正常工作的话,返回标准的冒号分隔格式。  
  if   (Netbios(&Ncb)   ==   0)  
  {  
  memcpy(acMac,   Adapter.adapt.adapter_address,   6);  
  return   true;  
  }  
  else  
  {  
  return   false;  
  }  
   
   
  ---------------------  
   
  SOCKET s;  
  if((s   =   socket(AF_INET,   SOCK_DGRAM,   0))   ==   INVALID_SOCKET)  
  return   false;  
   
  sendto(s,   (const   char   *)&ai,   sizeof(AuthInfo),   0,  
  (SOCKADDR   *)&sin,   sizeof(SOCKADDR));  
  closesocket(s);  
  SetLastError(0);  
   
  Sleep(1000);  
  sin.sin_addr.S_un.S_addr =   INADDR_BROADCAST;  
  if(sendto(m_sck,   (const   char   *)&ai,   sizeof(AuthInfo),   0,  
  (SOCKADDR   *)&sin,   sizeof(SOCKADDR))   ==   SOCKET_ERROR){  
  return   false;  
  }  
  Top

46 楼JennyVenus()回复于 2002-09-13 22:22:33 得分 2

//                                                                      
  //                                                                      
  //     ^^       ^^   ^^^^^^         ^^^^     ^^^^^^^    
  //     ^^       ^^     ^^     ^^     ^^     ^^   ^^       ^^    
  //     ^^       ^^     ^^     ^^   ^^         ^   ^         ^^    
  //     ^^       ^^     ^^     ^^   ^^                     ^^      
  //     ^^       ^^     ^^^^^     ^^                   ^^        
  //     ^^       ^^     ^^           ^^   ^^^^       ^^          
  //     ^^       ^^     ^^           ^^       ^^     ^^            
  //     ^^       ^^     ^^           ^^       ^^   ^^         ^    
  //     ^^       ^^     ^^             ^^     ^^   ^^       ^^    
  //       ^^^^^     ^^^^             ^^^   ^   ^^^^^^^    
  //                                                                      
  //                                                                      
  //                                                                      
  //                                                                      
  Top

47 楼mjk()回复于 2002-09-14 10:53:48 得分 2

有没有广播的源代码?Top

48 楼flyingcrean(flying鹤)回复于 2002-09-14 11:52:01 得分 2

能给我份么?  
  tina_arena@21cn.com  
   
  谢谢Top

49 楼noend(寻找中)回复于 2002-09-14 18:44:42 得分 2

cywhust@163.com  
  3xs^_^Top

50 楼float_leaf(leaf)回复于 2002-09-14 22:10:49 得分 2

可以给我也发一份么?哥们。  
  jjh3306@sina.comTop

51 楼uio45757(一条傻鱼)回复于 2002-09-14 22:23:47 得分 2

算我一份吧,,uio45757@etang.com  
  谢谢Top

52 楼missRainbowAgain(godness)回复于 2002-09-14 22:29:13 得分 2

我也想要  
  weimengni@eyou.comTop

53 楼fengge008(风歌)回复于 2002-09-14 22:42:32 得分 2

俺也要    
  fengge2724@sina.com  
  多谢了Top

54 楼jiansee(Jiansee)回复于 2002-09-14 22:47:43 得分 2

组播,广播的源码(发送和接收),谢谢!正头痛中。。。  
   
  zdenspace@yahoo.comTop

55 楼SamPony(HelloKitty)回复于 2002-09-15 09:37:22 得分 2

我也要!谢谢!  
  floatinsky@163.netTop

56 楼wuxuan(真心英雄)回复于 2002-09-16 11:23:52 得分 0

我已经给各位发去了源码,请查收,同时谢谢各位的关注.Top

相关问题

  • Socket的组播问题,如何使 100M 到 10M 传输不丢包?
  • Socket的组播问题,如何使 100M 到 10M 传输不丢包????
  • 组播与Internet??
  • 组播-----急!!!!!!
  • socket api
  • 组播问题(1)
  • csocket 与 socket api?
  • 关于multicast,组播通讯。
  • 关于组播问题,急急急!
  • 什么是未定义的IP组播。`

关键词

  • .net
  • 源码
  • csdn
  • socket
  • 接口
  • ncb
  • 帖子
  • 组播
  • chinaok
  • 谢谢

得分解答快速导航

  • 帖主:wuxuan
  • nanjianhui
  • fly_bird
  • black_fox
  • liuyup
  • liuwei662656
  • chenm001
  • sunyou
  • pzhou
  • mengxihe
  • rocshaw
  • coolc
  • shaohua
  • mucel
  • learnerX
  • hdsw21st
  • happynow
  • ln_changcheng
  • xiaopan
  • winthegame
  • cococut
  • aben456
  • cunni
  • Chiun
  • guzh
  • seculr
  • arvid_gs
  • anyoshon
  • yan_zg
  • Vc_God
  • hash_boy
  • flybusflybus
  • jtg98g3
  • guiqing
  • tonycxy
  • JennyVenus
  • JennyVenus
  • mjk
  • flyingcrean
  • noend
  • float_leaf
  • uio45757
  • missRainbowAgain
  • fengge008
  • jiansee
  • SamPony

相关链接

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

广告也精彩

反馈

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