SendInfo.cpp
资源名称:Client.rar [点击查看]
上传用户:szjkjd
上传日期:2022-06-27
资源大小:8968k
文件大小:3k
源码类别:
浏览器
开发平台:
Visual C++
- /*! @sendinfo.cpp
- *******************************************************************************
- <PRE>
- 模块名 : 服务器通信
- 文件名 : sendinfo.cpp
- 相关文件 : sendinfo.h
- 文件实现功能 : 像指定服务器发送数据
- 作者 : 王小静
- 版本 : 1.0
- --------------------------------------------------------------------------------
- 备注 : -
- --------------------------------------------------------------------------------
- 修改记录 :
- 日 期 版本 修改人 修改内容
- 2010/02/08 1.0 王小静 创建
- </PRE>
- ********************************************************************************
- * 版权所有(c) 2010, 17jago, 保留所有权利
- *******************************************************************************/
- #include "stdafx.h"
- #include "sendinfo.h"
- #include "Sysinfo.h"
- #include <windows.h>
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <winsock.h>
- using namespace std;
- CSendInfo::CSendInfo(void)
- {
- }
- CSendInfo::~CSendInfo(void)
- {
- }
- /*! @SendInfo
- ************************************************************************************** <PRE> 函数名 : SendInfo 功能 : 发送计算机信息到指定服务器 参数 : [IN] p_ipaddr : 服务器的IP地址 : [IN] i_port : 服务器的端口号 : [IN] i_htonl : 识别字,2-为发送计算机信息,并发送长度,非2,不发送长度 : [IN] p_send : 发送信息的内容 返回值 : 成功发送返回true,失败:false
- -------------------------------------------------------------------------------- 备注 : -
- 典型用法 : -
- --------------------------------------------------------------------------------
- 作者 : 王小静
- </PRE> *************************************************************************************/
- bool CSendInfo::SendInfo(char *p_ipaddr , int i_port,int i_htonl,char * p_send)
- {
- //初始化
- //计算机硬件信息
- WSADATA ws;
- //初始化ws,作用是初始化Windows 套接字的动态连接库(Sockets DLL)
- WSAStartup(MAKEWORD(2,2),&ws);
- //套接字
- int i_socket;
- //地址结构
- struct sockaddr_in sin;
- //地址结构清零
- memset(&sin,0,sizeof(sin));
- //ipv4方式
- sin.sin_family = AF_INET;
- //将主机的无符号短整形数转换成网络字节顺序
- sin.sin_port = htons(i_port);
- //添加ip地址
- sin.sin_addr.s_addr = inet_addr(p_ipaddr);
- //创建套接字
- if((i_socket = socket(PF_INET, SOCK_STREAM, 0)) == -1)
- {
- printf("err create socketn");
- return false;
- }
- //创建连接
- if((connect(i_socket,(struct sockaddr*)&sin,sizeof(struct sockaddr_in)) ) == -1)
- {
- printf("error connext server n");
- return false;
- }
- //将串长度转换成网络字节序
- int i_length = htonl(strlen(p_send));
- //将识别码转换成网络字节序
- int a = htonl(i_htonl);
- //发送识别码
- if((send(i_socket,(char*)&a,4,0)) == -1)
- {
- printf("errorn");
- }
- //如果是2则发送字符串长度
- if(2 == i_htonl)
- {
- if(-1 == (send(i_socket,(char*)&i_length,sizeof(int),0)))
- {
- printf("error sendn");
- }
- }
- //发送字符串
- if(-1 == (send(i_socket,p_send,strlen(p_send),0)))
- {
- printf("error sendn");
- }
- //关闭套接字
- closesocket(i_socket);
- //关闭ws
- WSACleanup ();
- return true;
- }