设为首页】 【加入收藏】 【网站地图】 【商品折扣
娱乐一生 娱乐明星
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
首页  |  java  |  .NET  |  C/C++  |  网页技术  |  php  |  asp  |  delphi  |  VC  |  VB开发  |  游戏开发  |  软件工程  |  Power Builder  |  Linux开发  |  Windows开发技巧
当前位置:首页 >> 用户界面 >> 使用WinInet编写发送短信程序 -IT资源在线

使用WinInet编写发送短信程序 -IT资源在线 -

  如果能够使自己程序具有短信发送功能,那将会使您的程序蓬荜生辉,特别是通讯录等程序。通常在程序中发送短信有两种方式,一种是使用GSM Modem通过计算机串口编程发送短信,这种方式需要购置硬件设备,既不方便又不经济!另一种方式是通过网络发送,我们可以先在163.com等网站上注册一个用户,然后通过这些具有短信发送功能的网站发送短信。这种方式比较经济。下面本文讲述第二种的实现方式。
 
  实际上,我们的程序只要具有象浏览器那样向HTTP服务器发送数据的功能,我们就可以模拟浏览器的登陆等操作,通过程序来发送短信。我们打算使用WinInet函数来实现与HTTP服务器的通信。

  主要就两个函数,一个就是模拟浏览器的函数,另一个是发送短信的函数,其中使用了网易作为测试样例,您还可以自己添加其他短信网关。

/*****************************************************************
* 函数介绍: 执行HTTP的Post或Get方法
* 输入参数: TCHAR* hdr  - HTTP头
  TCHAR* accept  - Accept类型
  TCHAR* Method  - POST 或 GET
  TCHAR* frmdata  - 要提交的数据
  TCHAR* ServerName - 服务器地址
  TCHAR* FormAction - 数据提交到的网页名称
* 输出参数: 无
* 返 回 值: int  - 返回操作状态(见SendSMS)
*****************************************************************/
int doHTTP(TCHAR* hdrs, TCHAR* accept, TCHAR* Method, TCHAR* frmdata, TCHAR* ServerName, TCHAR* FormAction)


{
  // 创建Internet
  HINTERNET hSe ion = InternetOpen("MyAgent",
  INTERNET_OPEN_TYPE_PRECONFIG,
  NULL,
  NULL,
  0);


  if (!hSe ion)
  {
  return 5;
  }
  // 连接服务器
  HINTERNET hCo ect = InternetCo ect(hSe ion,
  ServerName,
  INTERNET_DEFAULT_HTTP_PORT,
  NULL,
  NULL,


  INTERNET_SERVICE_HTTP,
  0,
  1);
  if (!hCo ect)
  {
  return 2;
  }
  // 创建一个请求
  HINTERNET hRequest = HttpOpenRequest(hCo ect,
  Method,

  FormAction,
  HTTP_VERSION,
  NULL,
  (co t char**)&am accept,
  0,
  1);
  if (!hRequest)
  {
  return 2;
  }
  // 发送请求
  BOOL  endRequest = Htt endRequest(hRequest,
  hdrs,
  strlen(hdrs),
  frmdata,

  strlen(frmdata));
  if (! endRequest)
  {
  return 2;
  }

////////////////////////调试用/////////////////
#ifdef _DEBUG
  int bDoLoop = 1;
  LPTSTR szReadBuffer;
  DWORD lNumberOfBytesRead;
  FILE* f1;
  szReadBuffer = (LPTSTR) malloc(500);
  ZeroMemory(szReadBuffer, 500);
  if ((f1=fopen("c:\test.htm", "w"))!=NULL)
  {
  while(bDoLoop)
  {
  bDoLoop = InternetReadFile(hRequest, szReadBuffer, 500, &am lNumberOfBytesRead);
  fseek(f1, 0L, SEEK_END);
  fwrite(szReadBuffer, sizeof(szReadBuffer), lNumberOfBytesRead, f1);
  if (lNumberOfBytesRead<500)
  bDoLoop = 0; < an cla ='Cvb446'>
  }
  }
  fclose(f1);
  free(szReadBuffer);
#endif
//////////////////////////////////////////////////

  // 清除句柄
  if (hRequest)
  InternetCloseHandle(hRequest);
  if (hCo ect)
  InternetCloseHandle(hCo ect);
  if (hSe ion)
  InternetCloseHandle(hSe ion);

  return 0;
}

/*****************************************************************
* 函数介绍: 发送短信函数
* 输入参数: char* lpGateway  - 发送网关名称
  char* lpUserName - 发送者登陆账号
  char* l a word - 发送者登陆密码
  char* l hone  - 接收者手机号码
  char* lpContent  - 发送内容
  char* l ickName - 发送者昵称
  char* lpExtent  - 扩展信息 
* 输出参数: 无


* 返 回 值: int  00  - 操作完成,结果未知
  01  - 网关代号不存在
  02  - 网络连接超时
  03  - 用户中止操作
  04  - 网关/账号/手机/短信内容空白或非法
  05  - 出现其他错误
*****************************************************************/
SENDSMS_API int CALLAGREEMENT SendSMS(char* lpGateway,
  char* lpUserName,
  char* l a word,
  char* l hone, 
  char* lpContent,
  char* l ickName,
  char* lpExtent
  )
{
  int Result;
  static TCHAR hdrs[] = _T("Content-Type: a lication/x-www-form-urlencoded");
  static TCHAR accept[] = _T("Accept: */*");
  static TCHAR frmdata[1024];

  // 登陆姓名,密码等不允许为空
  if ((strlen(lpGateway)<=0)||(strlen(lpUserName)<=0)||
  (strlen(l a word)<=0)||(strlen(l hone)<=0)||(strlen(lpContent)<=0))
  return 4;

  // 选择网易网关发送
  if (strcmp(lpGateway, "163.com")==0)
  {
  // 登录短信发送系统
   rintf(frmdata, "username=% am a word=%s", lpUserName, l a word);
  Result = doHTTP(hdrs, accept, "POST", frmdata, "reg4.163.com", "/in.j ");
 
  // 发送短信
  if (strlen(l ickName)>0)
   rintf(frmdata, "send=1&am hone=% am me age=%s--%s", l hone, lpContent, l ickName);
  else
   rintf(frmdata, "send=1&am hone=% am me age=%s", l hone, lpContent);
  Result = doHTTP(hdrs, accept, "POST", frmdata, "sms.163.com", "/service/sendmsg_pop.php");


 
  // 退出短信发送系统
   rintf(frmdata, "username=%s", lpUserName);
  Result = doHTTP(hdrs, accept, "GET", frmdata, "reg4.163.com", "/Logout.j ");

  return Result;
  }


  // 选择搜狐网关发送
  if (strcmp(lpGateway, "sohu.com")==0)
  {
  Result = 1;
  return Result;
  }

  // 网关代号不存在
  return 1;
}




 

娱乐图摘

更多 >>

靓丽清纯美女meimei

美女私房全裸照
导演劝女演员脱衣服(视频)

大胆火辣人体艺术写真(图)

黑丝妹妹热辣诱惑-丝袜美女妹妹

PLMM 漂亮妹妹图集-妹妹图库

全球美女图库-美女集中营

52MM 我爱漂亮妹妹-制服妹妹诱惑

图王图库-世界美女明星图片资料库
美女写真集锦

激情两性-解密性生活
浴室MM湿身内衣诱惑
邻家小妹洗澡被偷拍(视频)

热点文章

更多

· 利用手机模块实现短消息(一) -IT资源在线
· 基于SM 协议的GSM短消息增值业务接口设计与实现
· NOKIA封装的手机开发包SDK文档 -IT资源在线
· 英斯克的网关模拟器 -IT资源在线
· 在PC上通过手机发送短消息 -IT资源在线
· 移动和联通相关开发协议和规范 -IT资源在线
· 使用WinInet编写发送短信程序 -IT资源在线
· SMS基本概念和移动通信系统介绍 -IT资源在线
· J2ME游戏开发学习 - 用setClip分割图片的一些方法
· 各网关厂商API接口 -IT资源在线

热点文章

更多