首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> VC >> 正文
用Visual C++实现局域网IP多播
来源:ChinaItLab 作者:佚名 时间:2007-6-21

/////////////////////////////////////////////////////////////////////Sender.c程序代码
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
#define MCASTADDR "233.0.0.1" //本例使用的多播组地址。
#define MCASTPORT 5150 //本地端口号。
#define BUFSIZE 1024 //发送数据缓冲大小。
int main( int argc,char ** argv)
{
 WSADATA wsd;
 struct sockaddr_in remote;
 SOCKET sock,sockM;
 TCHAR sendbuf[BUFSIZE];
 int len = sizeof( struct sockaddr_in);
 //初始化WinSock2.2
 if( WSAStartup( MAKEWORD(2,2),&wsd) != 0 )
 {
  printf("WSAStartup() failed\n");
  return -1;
 }
 if((sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,
  WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF|
  WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
 {
  printf("socket failed with:%d\n",WSAGetLastError());
  WSACleanup();
  return -1;
 }
 //加入多播组
 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)
 {
  printf("WSAJoinLeaf() failed:%d\n",WSAGetLastError());
  closesocket(sock);
  WSACleanup();
  return -1;
 }

 //发送多播数据,当用户在控制台输入"QUIT"时退出。
 while(1)
 {
  printf("SEND : ");
  scanf("%s",sendbuf);
  if( sendto(sockM,(char*)sendbuf,strlen(sendbuf),0,(struct sockaddr*)&remote,sizeof(remote))==SOCKET_ERROR)
  {
   printf("sendto failed with: %d\n",WSAGetLastError());
   closesocket(sockM);
   closesocket(sock);
   WSACleanup();
   return -1;
  }
  if(strcmp(sendbuf,"QUIT")==0) break;
  Sleep(500);
 }

 closesocket(sockM);
 closesocket(sock);
 WSACleanup();
 return 0;
}

  四、小结

  本实例对IP多播通信进行了探讨,实例程序由Sender和Receiver两部分组成,Sender用户从控制台上输入多播发送数据,Receiver端都要求加入同一个多播组,完成接收Sender发送的多播数据。

上一页  [1] [2] [3] 

【责编:Youping】
中国IT教育热线咨询
相关文章
Java中消除实现继承和面向接口编程
实现Java平台的三种方式
Delphi中用API实现在MSN的信息提示
利用C#实现标注式消息提示窗口
如何用Delphi实现子目录级的文件查询
如何使用Delphi实现无边界窗体的移动
用纯JAVA语言编程读取MAC地址的实现
用Visual C#实现网络封包监视…
VB.NET实现PC与掌上电脑PPC的双向通信
利用Visual C++制作应用程序启动画面…
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05