#include "StdAfx.h"
#include "winSocket.h"
#pragma warning(push)
#pragma warning(disable:4996)
namespace Yellow{
namespace net{
/*
constructor
*/
CYSocket::CYSocket()
: m_hSocket(0)
, m_wVersion(0)
, m_ErrorNumber(0)
{
WSADATA wsaD;
m_wVersion = MAKEWORD(2,2);
memset( m_LastError, 0, ERR_MAXLENGTH );
memset( &m_sockaddr, 0, sizeof( m_sockaddr ) );
memset( &m_rsockaddr, 0, sizeof( m_rsockaddr ) );
int result = WSAStartup( m_wVersion, &wsaD );
if( result != 0 )
{
set_LastError( "WSAStartup failed!", WSAGetLastError() );
return;
}
}
CYSocket::~CYSocket()
{
WSACleanup();
}
/******************************************************************************
功能描述:Initializes SOCKET object for the class
输入参数:
输出参数:
返 回 值:ERR_WSAERROR upon error otherwise ERR_SUCCESS
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Create( void )
{
if ( (m_hSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP )) == INVALID_SOCKET )
{
set_LastError( "socket() failed", WSAGetLastError() );
return ERR_WSAERROR;
} // if ( (m_hSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP )) == INVALID_SOCKET )
set_RecvTimeout( RECEIVETIMEOUT ) ;
set_SendTimeout( SENDTIMEOUT ) ;
return ERR_SUCCESS;
}
/******************************************************************************
功能描述:Closes SOCKET object. Does not destroy class
输入参数:
输出参数:
返 回 值:ERR_WSAERROR upon error otherwise ERR_SUCCESS
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Close( void )
{
if ( closesocket( m_hSocket ) == SOCKET_ERROR ) //close socket
{
set_LastError( "closesocket() failed", WSAGetLastError() );
return ERR_WSAERROR;
} // if ( closesocket( m_hSocket ) == SOCKET_ERROR ) //close socket
memset( &m_sockaddr, 0, sizeof( sockaddr_in ) );
memset( &m_rsockaddr, 0, sizeof( sockaddr_in ) );
m_hSocket = 0 ;
return ERR_SUCCESS;
}
/******************************************************************************
功能描述:establishes TCP/IP connection with remote host (strRemote) on port
输入参数:[in] char* strRemote remote IP
[in] unsigned int iPort remote port
输出参数:
返 回 值:ERR_BADPARAM for invalid parameters, ERR_WSAERROR upon error,
otherwise ERR_SUCCESS
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Connect( const char* strRemote, unsigned int iPort )
{
if( strlen( strRemote ) == 0 || iPort == 0 )
return ERR_BADPARAM;
hostent *hostEnt = NULL;
long lIPAddress = 0;
hostEnt = gethostbyname( strRemote ); //get host name
if( hostEnt != NULL )
{
lIPAddress = ((in_addr*)hostEnt->h_addr)->s_addr;
m_sockaddr.sin_addr.s_addr = lIPAddress;
}
else
{
m_sockaddr.sin_addr.s_addr = inet_addr( strRemote );
}
m_sockaddr.sin_family = AF_INET;
m_sockaddr.sin_port = htons( iPort );
if( connect( m_hSocket, (SOCKADDR*)&m_sockaddr, sizeof( m_sockaddr ) ) == SOCKET_ERROR )
{
set_LastError( "connect() failed", WSAGetLastError() );
return ERR_WSAERROR;
}
return ERR_SUCCESS;
}
/******************************************************************************
功能描述:Places the SOCKET in the listening state. Requires that Bind() be called previously.
输入参数:[in] iQueuedConnections
输出参数:
返 回 值:ERR_BADPARAM for invalid parameters, ERR_WSAERROR upon error,otherwise ERR_SUCCESS
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Listen( int iQueuedConnections )
{
if( iQueuedConnections == 0 )
return ERR_BADPARAM;
if( listen( m_hSocket, iQueuedConnections ) == SOCKET_ERROR )
{
set_LastError( "listen() failed", WSAGetLastError() );
return ERR_WSAERROR;
}
return ERR_SUCCESS;
}
/******************************************************************************
功能描述:Sends data (strData) to remote side on socket s.
输入参数: [in] SOCEKT s connected SOCKET
[in] char* strData will be send data
[in] int iLen
输出参数:
返 回 值:ERR_BADPARAM for invalid parameters,
ERR_WSAERROR upon error, otherwise ERR_SUCCESS
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Send( SOCKET s, const char* strData, int iLen )
{
if( strData == NULL || iLen == 0 )
return ERR_BADPARAM;
if( send( s, strData, iLen, 0 ) == SOCKET_ERROR )
{
set_LastError( "send() failed", WSAGetLastError() );
return ERR_WSAERROR;
}
return ERR_SUCCESS;
}
/******************************************************************************
功能描述:Sends data (strData) to remote side on an established TCP/IP connection.
Requires that Connect be called previously.
输入参数: [in] char* strData will be send data
[in] int iLen data len
输出参数:
返 回 值: ERR_BADPARAM for invalid parameters,
ERR_WSAERROR upon error,otherwise ERR_SUCCESS
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Send( const char* strData, int iLen )
{
if( strData == NULL || iLen == 0 )
return ERR_BADPARAM;
if( send( m_hSocket, strData, iLen, 0 ) == SOCKET_ERROR )
{
set_LastError( "send() failed", WSAGetLastError() );
return ERR_WSAERROR;
}
return ERR_SUCCESS;
}
/******************************************************************************
功能描述: Receive data from incoming queue and copies to (strData).
输入参数: [in] SOCKET s connected SOCKET handle
[in] char* strData will be receive data
[in] int iLen will contain the length of data read in bytes
输出参数:
返 回 值:ERR_BADPARAM for invalid parameters, ERR_WSAERROR upon error otherwise passes what recv() returns
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Receive( SOCKET s, char* strData, int iLen )
{
if( strData == NULL )
return ERR_BADPARAM;
int len = 0;
int ret = 0;
ret = recv( s, strData, iLen, 0 );
if ( ret == SOCKET_ERROR )
{
set_LastError( "recv() failed", WSAGetLastError() );
return ERR_WSAERROR;
}
return ret;
}
/******************************************************************************
功能描述:receive data from incoming queue and copies to (strData).
输入参数: [in] char* strData will be receive data
[in] int iLen will contain the length of data read in bytes
输出参数:ERR_WSAERROR upon error otherwise ERR_SUCCESS
返 回 值:ERR_BADPARAM for invalid parameters, ERR_WSAERROR upon error,otherwise passes what recv() returns
其 它:
作 者:宁家宏
日 期:2009-8-4
*******************************************************************************/
int CYSocket::Receive( char* strData, int iLen )
{
if( strData == NULL )
return ERR_BADPARAM;
int len = 0;
int ret = 0;
ret = recv( m_hSocket, strData, iLen, 0 );
if ( ret == SOCKET_ERROR )
{
set_LastError( "recv() failed", WSAGetLastError() );
return ERR_WSAERROR;
}
return ret;
}
/**********************************************************************
HttpSocket.rar_HTTP_c http请求_httpsocket_http请求类_socket


2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在IT行业中,网络通信是不可或缺的一部分,而HTTP(超文本传输协议)作为互联网上应用最为广泛的一种网络协议,被广泛用于浏览器与服务器之间的数据交换。本文将深入探讨标题中的"HttpSocket.rar",这是一个基于Windows Socket实现的HTTP请求封装类,它提供了便捷的方式来发送和接收HTTP请求。 让我们来理解一下HTTP协议。HTTP是一种无状态、基于TCP/IP的应用层协议,它规定了客户端(通常是Web浏览器)与服务器之间如何交换数据。HTTP请求由方法(如GET、POST)、URL、协议版本、头部和消息体等部分组成。响应则包含状态码、头部和可能的消息体。 接下来,我们转向"HttpSocket"。在Windows环境中,Socket API是进行网络编程的基本接口,它提供了一种标准的方式,使得应用程序可以发送和接收数据。在本案例中,"HttpSocket"是对Winsock库的封装,简化了通过Socket进行HTTP通信的复杂性。开发者无需深入了解底层的Socket细节,就能利用HttpSocket类来构建HTTP请求并处理响应。 文件列表中的"winSocket.cpp"和"winSocket.h"很可能是实现和声明Winsock功能的源代码和头文件,它们包含了创建、连接、监听、发送和接收数据等Socket操作的基本函数。 "YHttpRequest.cpp"和"YHttpRequest.h"则是关于HTTP请求对象的实现和声明。这个类可能包含了构造HTTP请求的方法,如设置HTTP方法(GET、POST等)、URL、头部和消息体,以及解析服务器返回的HTTP响应的功能。 "YHttpSocket.cpp"和"YHttpSocket.h"很可能是HttpSocket类的具体实现和接口定义。这个类可能是基于Winsock的,它封装了Socket操作,并添加了HTTP协议的相关逻辑,比如构造HTTP报文,处理HTTP状态码,以及处理连接和断开等网络交互过程。 总结来说,HttpSocket是一个针对Windows平台的HTTP请求库,它利用Socket API实现了HTTP协议的客户端功能。开发人员可以借助这个库轻松地进行HTTP通信,而无需关心底层网络编程的复杂性。通过理解和使用HttpSocket,可以大大简化在C++环境中开发需要HTTP通信功能的应用程序的工作。这个库的源代码提供了学习和自定义HTTP通信行为的宝贵资源。

























- 1

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 115
- 资源: 1万+





我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Android电子书阅读器.zip
- Android高手过招 FAQ.zip
- Android开发教程笔记完全版.zip
- Android——仿美图秀秀和IOS系统的相机胶卷.zip
- android面试题.zip
- Android模仿易网新闻页面源码(异步加载).zip
- Android瀑布流实现,类似于蘑菇街和迷尚 应用里的排列.zip
- 毕业设计,开题报告,论文参考:DSP广告投放平台系统的设计与实现-基于PHP和Java的互联网广告系统开发
- Android奇艺高清UI界面源代码.zip
- Android任务管理器源码.zip
- Android系统原理与开发要点详解_培训课件.zip
- android通话时间统计器[实例,源代码].zip
- 毕业设计,开题报告,论文参考:医院营养科营养筛查系统设计与实现-基于PHP与多语言支持的Web应用
- android网络视频播放器(完整可运行).zip
- Android项目之——页面特效集合(附源码).zip
- Android项目之——漂亮的平台书架.zip


