六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]信使服務是Windows 2000/XP下面的一種通信服務,通過它我們可以在網上象QQ一樣進行實時的交流,但和QQ不同的是信使服務不需要擁有一個號碼,它只要知道對方的IP地址--如果在局域網中,只要知道對方的計算機名就可以了。我們可以利用"net send"在命令行下面發送消息...
信使服務是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信使服務實現的內幕。



主站蜘蛛池模板: 人人狠 | 天堂8中文在线bt | 欧美做真爱免费无遮挡 | 欧美亚洲国产成人不卡 | 三级在线国产 | 日韩欧美网址 | 四虎影院在线免费播放 | 欧洲另类一二三四区 | 四虎国内精品一区二区 | 又粗又硬又大又爽免费视频播放 | 亚洲 欧美 自拍 卡通 综合 | 亚洲国产成人久久一区www | 亚洲色欲色欲www在线观看 | 亚洲日韩精品欧美一区二区 | 亚洲成在人线影视天堂网 | 日韩欧美视频在线播放 | 欧美综合图区亚欧综合图区 | 亚洲欲色 | 日韩 欧美 综合 在线 制服 | 天天天操天天天干 | 亚洲成在人 | 伊人久久大香线蕉综合7 | 深夜爽爽福利gif在线观看 | 热久久久 | 色老久久精品偷偷鲁一区 | 日韩美香港a一级毛片 | 日本综合欧美一区二区三区 | 最近手机中文字幕1页 | 一级人做人a爰免费视频 | 日韩毛片免费线上观看 | 青青草国产精品人人爱99 | 自拍视频啪 | 在线观看亚洲视频 | 亚洲剧场午夜在线观看 | 亚洲一一在线 | 欧美亚洲黄色 | 人人爱人人看 | 色综合色狠狠天天久久婷婷基地 | 日韩专区亚洲综合久久 | 中文字幕在线视频免费观看 | 日本高清视频成人网www |