Exemplo n.º 1
0
/*
	功能:客户端函数,发起TCP连接
	参数:
		lpszHostAddress	LPCTSTR		[In]	对方Ip地址或域名
		nHostPort		UINT		[In]	对方监听的端口
	返回值:成功返回TRUE,失败返回FALSE
*/
bool Socket::Connect( const char *lpszHostAddress, unsigned short nHostPort, long lSecond )
{
	if ( NULL == lpszHostAddress ) return false;
	//将域名转换为真实IP,如果lpszHostAddress本来就是ip,不影响转换结果
 	char ip[64]; //真实IP
#ifdef WIN32
 	PHOSTENT hostinfo;   
#else
	struct hostent * hostinfo;   
#endif
	strcpy( ip, lpszHostAddress ); 
	if((hostinfo = gethostbyname(lpszHostAddress)) != NULL)   
	{
		strcpy( ip, inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list) ); 
	}

	//使用真实ip进行连接
	sockaddr_in sockAddr;
	memset(&sockAddr,0,sizeof(sockAddr));
	sockAddr.sin_family = AF_INET;
	sockAddr.sin_addr.s_addr = inet_addr(ip);
	sockAddr.sin_port = htons( nHostPort );
	SetSendTimeout(lSecond, 0);
	if ( SOCKET_ERROR != connect(m_hSocket, (sockaddr*)&sockAddr, sizeof(sockAddr)) )
	{
		SetSendTimeout(0, 0);
		InitPeerAddress();
		InitLocalAddress();
		return true;
	}
	SetSendTimeout(0, 0);

	return false;
}
Exemplo n.º 2
0
/*
	功能:绑定一个socket句柄,让该类对象在这个句柄上进行操作
	逻辑:
		傻瓜式绑定,不管类对象之前是否已经绑定了其它套接字,首先会调用傻瓜式函数close关闭连接,然后在绑定新的套接字,
		如果没有实现调用Detach解除旧绑定,那么旧的绑定sock将丢失
	参数:
		hSocket	SOCKET	[In]	要绑定sock句柄
*/
void Socket::Attach(SOCKET hSocket)
{
	m_hSocket = hSocket;
	m_bBlock = true;
	m_bOpened = true;//未打开状态
	InitPeerAddress();
	InitLocalAddress();
}
Exemplo n.º 3
0
	void Socket::Attach(SOCKET hSocket)
	{
		m_hSocket = hSocket;
		m_bIsBlock = true;
		m_bIsOpen = true;
		InitPeerAddress();
		InitLocalAddress();
	}
Exemplo n.º 4
0
Socket::Socket( SOCKET hSocket, protocol nProtocolType )
{
	m_hSocket = hSocket;
	m_bBlock = true;
	m_bOpened = false;//未打开状态
	Init(nProtocolType);
	InitPeerAddress();
	InitLocalAddress();
}
Exemplo n.º 5
0
	Socket::Socket(SOCKET s, int proType)
	{
		m_hSocket = s;
		m_bIsBlock = true;
		m_bIsOpen = false;
		Init(proType);
		InitPeerAddress();
		InitLocalAddress();
	}
Exemplo n.º 6
0
/*
	功能:客户端函数,发起TCP连接
	参数:
		lpszHostAddress	LPCTSTR		[In]	对方Ip地址
		nHostPort		UINT		[In]	对方监听的端口
	返回值:成功返回TRUE,失败返回FALSE
*/
bool Socket::Connect( const char *lpszHostAddress, unsigned short nHostPort)
{
	assert( NULL != lpszHostAddress );

	sockaddr_in sockAddr;
	memset(&sockAddr,0,sizeof(sockAddr));
	sockAddr.sin_family = AF_INET;
	sockAddr.sin_addr.s_addr = inet_addr(lpszHostAddress);
	sockAddr.sin_port = htons( nHostPort );

	if ( SOCKET_ERROR != connect(m_hSocket, (sockaddr*)&sockAddr, sizeof(sockAddr)) )
	{
		InitPeerAddress();
		InitLocalAddress();
		return true;
	}

	return false;
}