SendInfo.cpp
上传用户:szjkjd
上传日期:2022-06-27
资源大小:8968k
文件大小:3k
源码类别:

浏览器

开发平台:

Visual C++

  1. /*! @sendinfo.cpp
  2. *******************************************************************************
  3. <PRE>
  4. 模块名         : 服务器通信
  5. 文件名         : sendinfo.cpp
  6. 相关文件       : sendinfo.h
  7. 文件实现功能   : 像指定服务器发送数据
  8. 作者           : 王小静
  9. 版本           : 1.0
  10. --------------------------------------------------------------------------------
  11. 备注           : -
  12. --------------------------------------------------------------------------------
  13. 修改记录 : 
  14. 日  期          版本            修改人          修改内容 
  15. 2010/02/08      1.0             王小静            创建
  16. </PRE>
  17. ********************************************************************************
  18. * 版权所有(c) 2010, 17jago, 保留所有权利
  19. *******************************************************************************/
  20. #include "stdafx.h"
  21. #include "sendinfo.h"
  22. #include "Sysinfo.h"
  23. #include <windows.h>
  24. #include <iostream>
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <winsock.h>
  28. using namespace std;
  29. CSendInfo::CSendInfo(void)
  30. {
  31. }
  32. CSendInfo::~CSendInfo(void)
  33. {
  34. }
  35. /*! @SendInfo
  36. ************************************************************************************** <PRE> 函数名       : SendInfo 功能         : 发送计算机信息到指定服务器 参数         : [IN] p_ipaddr    : 服务器的IP地址              : [IN] i_port      : 服务器的端口号              : [IN] i_htonl     : 识别字,2-为发送计算机信息,并发送长度,非2,不发送长度              : [IN] p_send      : 发送信息的内容  返回值       : 成功发送返回true,失败:false
  37. -------------------------------------------------------------------------------- 备注         : -
  38. 典型用法     : -
  39. --------------------------------------------------------------------------------
  40. 作者         : 王小静
  41. </PRE> *************************************************************************************/
  42. bool CSendInfo::SendInfo(char *p_ipaddr , int i_port,int i_htonl,char * p_send)
  43. {
  44. //初始化
  45. //计算机硬件信息
  46. WSADATA ws;
  47.     //初始化ws,作用是初始化Windows 套接字的动态连接库(Sockets DLL)
  48. WSAStartup(MAKEWORD(2,2),&ws);
  49. //套接字
  50. int i_socket;
  51. //地址结构
  52.     struct sockaddr_in sin;
  53. //地址结构清零
  54. memset(&sin,0,sizeof(sin));
  55. //ipv4方式
  56. sin.sin_family = AF_INET;
  57. //将主机的无符号短整形数转换成网络字节顺序
  58. sin.sin_port =  htons(i_port);
  59. //添加ip地址
  60. sin.sin_addr.s_addr = inet_addr(p_ipaddr);
  61.     
  62. //创建套接字
  63. if((i_socket = socket(PF_INET, SOCK_STREAM, 0))  ==  -1)
  64. {
  65. printf("err create socketn");
  66. return false;
  67. }
  68.     //创建连接
  69. if((connect(i_socket,(struct sockaddr*)&sin,sizeof(struct sockaddr_in)) ) == -1)
  70. {
  71. printf("error connext server n");
  72.     return false;
  73. }
  74.     //将串长度转换成网络字节序  
  75. int i_length = htonl(strlen(p_send));
  76.     //将识别码转换成网络字节序
  77. int a = htonl(i_htonl);
  78. //发送识别码
  79. if((send(i_socket,(char*)&a,4,0)) == -1) 
  80. {
  81. printf("errorn");
  82. }
  83. //如果是2则发送字符串长度
  84. if(2 == i_htonl)
  85. {
  86. if(-1 == (send(i_socket,(char*)&i_length,sizeof(int),0)))
  87. {
  88. printf("error sendn");
  89. }
  90. }
  91. //发送字符串
  92. if(-1 == (send(i_socket,p_send,strlen(p_send),0)))
  93. {
  94. printf("error sendn");
  95. }
  96. //关闭套接字
  97. closesocket(i_socket);
  98.     //关闭ws
  99. WSACleanup ();
  100. return true;
  101. }