当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2012-03-13 17:47:00  来源:本站整理

Visual C++打造Windows信使服务程序[VC/C++编程]

赞助商链接



  本文“Visual C++打造Windows信使服务程序[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  信使服务是Windows 2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样举行及时的交流,但和QQ差别的是信使服务不需求拥有一个号码,它只要知道对方的IP 地址--假如在局域网中,只要知道对方的计算机名便可以了.我们可以操纵"net send"在号令行下面发送消息,也可以通过"掌握面板-管理工具-计算机管理"中的"操作"菜单里面的"全部任务-发送掌握台消息…"来发送.接纳方的计算奥秘求必须是Win2000/XP,因为 Win9x本身是不供应信服服务的,除非你手动启动了WinPopup..程序编译运行后,在Windows2000下启动掌握台,输入:netsend 192.168.0.10 127.0.0.1 "我的信使程序!"运行以上号令后,在Windows桌面上将弹出一个对话框,其上标有"我的信使程序!"字符和相关IP信息.

  步骤/办法

  1、实现办法

  信使服务为大家在网络上供应了简便、快速的聊天方法,所以网上也有一些改良了的信使服务发送程序,使信息的发送可以按照自己的志愿来举行而不受微软供应的"net send"所限制.假如你常常上网,大概会收到通过信使服务发来的广告大概其他莫名其妙的信息,而在"信使服务"窗口中所显示出来的发送方的计算机名大概 IP地址和你自己的竟然一样.假如你碰到过这种情形,那么你想不想知道这种改良了的信使服务发送程序是怎么实现的呢?

  本实例将要带你去解析一下Windows的信使服务,我们将从一个程序员的角度来看看这个信使服务发送程序是若何实现的.其实实现信使服务的整个历程很简单,我们只需求调用一个API函数:

  NET_API_STATUS NetMessageBufferSend(

  LPWSTR servername,

  LPWSTR msgname,

  LPWSTR fromname,

  LPBYTE buf,

  DWORD buflen

);

  此中该函数的参数阐明以下:

  servername:计算机名,该函数将在指定的这个计算机上面履行.假如为NULL,则表示为本地计算机,普通我们都将其设置为NULL.

  msgname:目标计算机的名字大概IP地址.

  fromname:源计算机的名字大概IP地址.

  buf:指向一个信息缓冲区的指针,在这里你可以填上你想发送的信息.要注意的是,这个参数用的是Unicode编码.

  buflen:上述信息缓冲区中的字节数.

  目前函数已经介绍完了,通过这个函数我们可以发现假如想实现匿名的信使服务实在是太简单--只需求在fromname中填上一个假充的计算机名大概IP 地址就行了.下面给出一个实际例子,在这个程序中,我们从号令行参数承受目标计算机和源计算机名字(IP地址),同时我们还可以设定信息发送的次数.

  2、编程步骤

  1、启动Visual C++6.0,新建项目netsend,挑选掌握台情势;

  2、在项目中增添新文件netsend.c;

  3、增添代码,编译运路程序.

  3、程序代码

  /////////////////////////////////////////////////////////////////////////

  #define _UNICODE

  #define UNICODE

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #pragma comment(lib,"netapi32.lib")

  int wmain(int argc, wchar_t *argv[])

  {

  int count;

  wchar_t *wdest, *wfrom, *buffer,*wtarget;

  DWORD dwReturn;

  if((argc <4) || (argc >5))

  {

  printf("Usge: %S [Count]\n",argv[0]);

  printf("Count: Count means number of times to send message,default is 1.\n");

  return 0;

  }

  wdest = argv[1]; //目标计算机

  wfrom = argv[2]; //源计算机

  buffer = argv[3]; //发送的信息

  count = _wtoi(argv[4]); //发送次数,缺省为1次

if(count ==0)

  count = 1;

  printf("count = %d\n",count);

  dwReturn = NetMessageBufferSend(NULL, wdest, wfrom,

  (LPBYTE)buffer, 2*lstrlen(buffer)); //因为buffer是Unicode编码,所以需求乘以2

  if(dwReturn == NERR_Success)

  {

  printf("Send OK!");

  while(count-->1)

  {

  NetMessageBufferSend(NULL, wtarget, wfrom, (LPBYTE)buffe,2*lstrlen(buffer));

  }

  return 0;

  }

  if(dwReturn == NERR_NameNotFound)

  {

  printf("The user name could not be found.\n");

  return 0;

  }

  if(dwReturn == NERR_NetworkError)

  {

  printf("A general failure occurred in the network hardware.\n");

  return 0;

  }

  if(dwReturn == ERROR_NOT_SUPPORTED)

  {

  printf("This network request is not supported.\n");

  return 0;

  }

  if(dwReturn == ERROR_INVALID_PARAMETER)

  {

  printf("The specified parameter is invalid.\n");

  return 0;

  }

  if(dwReturn == ERROR_ACCESS_DENIED)

  {

  printf("The user does not have access to the requested information.\n");

  return 0;

  }

  else

  printf("Unknown error!\n");

  return 0;

  }

  4、小结

本实例开辟一个Windows信使服务程序,以帮忙读者深化理解Windows信使服务实现的底细.

  以上是“Visual C++打造Windows信使服务程序[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Visual C++编程获得CPU信息
  • Visual C++打造Windows信使服务程序
  • Visual C++调试时查看数组内容
  • Visual C++中的数据范例转换
  • 操纵Visual C++计划自己的资源浏览器
  • 利用Visual C++调试器调试
  • Visual C++编辑器设置菜单General选项卡的利用
  • Visual C++编辑器设置菜单Debug选项卡的利用
  • Visual C++编辑器设置菜单C/C++选项卡的利用
  • Visual C++编辑器设置菜单Link选项卡的利用
  • Visual C++调试工具中调试窗口的利用
  • Visual C++调试工具中若何调试标记
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .