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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |