注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > Java 内容正文:Visual C++打造Windows信使服务程序

Visual C++打造Windows信使服务程序

发布时间:2006-05-08 16:13:08 来源:天极网 网友评论 0 条

   信使服务是Windows 2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样进行实时的交流,但和QQ不同的是信使服务不需要拥有一个号码,它只要知道对方的IP地址--如果在局域网中,只要知道对方的计算机名就可以了。我们可以利用"net send"在命令行下面发送消息,也可以通过"控制面板-管理工具-计算机管理"中的"操作"菜单里面的"所有任务-发送控制台消息…"来发送。接收方的计算机要求必须是Win2000/XP,因为 Win9x本身是不提供信服服务的,除非你手动启动了WinPopup.。程序编译运行后,在Windows2000下启动控制台,输入:netsend 192.168.0.10 127.0.0.1 "我的信使程序!"运行以上命令后,在Windows桌面上将弹出一个对话框,其上标有"我的信使程序!"字符和相关IP信息。
  一、实现方法
  信使服务为大家在网络上提供了简便、快捷的聊天方式,所以网上也有一些改进了的信使服务发送程序,使信息的发送可以按照自己的意愿来进行而不受微软提供的"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地址),同时我们还可以设定信息发送的次数。
  二、编程步骤
  1、启动Visual C++6.0,新建项目netsend,选择控制台模式;
  2、在项目中添加新文件netsend.c;
  3、添加代码,编译运行程序。
  三、程序代码
/////////////////////////////////////////////////////////////////////////
#define _UNICODE
#define UNICODE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <windows.h>
#include <locale.h>
#include <lm.h>
#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 <DestIP> <SourIP> <Message> [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;
}

  四、小结
  本实例开发一个Windows信使服务程序,以帮助读者深入了解Windows信使服务实现的内幕。

相关文章
  • Explorer.exe在不同Windows中的应用
  • Windows Live Mail M6将带来更多改进
  • 技巧讲解 通过注册表配置Windows 2003
  • 美图:Windows Vista 5381.1细节欣赏
  • Windows Live Mail Desktop试用手记
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Java技术的新方向
下一篇文章:用Java开源项目JOONE实现人工智能编程
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Java控件设计入门
Java控件设计入门
推荐阅讯
  • Java与XML联合编程之DOM篇(1)
  • Java实现类MSN、QQ好友上线通知界面
  • 打破Java定律:无需创建对象--Ioc容器革命
  • 浅析Java语言中两种异常的差别
  • Java2十大经典中文图书
  • Java Applet编程显示图像(1)
  • 没有Rails Java程序员如何使用Ruby
  • CLASSPATH详解
  • 通过实例论证J2ME的事件传输机制
  • Java实时应用程序中的内存管理
阅读排行
  • 1.Java连接SQL Server 2000
  • 2.Java文件操作详解
  • 3.Java控件设计入门
  • 4.Java操作Excel电子表格
  • 5.Java: JNI完全手册
  • 6.Java命令行简介
  • 7.开发J2EE应用应遵循的几点原则
  • 8.Servlet与Javabean配置
  • 9.Java规则引擎与其API应用详解
  • 10.CLASSPATH详解
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载