bool CSocket::tcpconnect(char *address, int port, int mode)
{
	SOCKADDR_IN addr;
	LPHOSTENT  hostEntry;
	if ((sockid = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == SOCKET_ERROR)
        return false;
	if ((hostEntry = gethostbyname(address))==NULL)
	{
		closesocket(sockid);
		return false;
	}
	addr.sin_family = AF_INET;
	addr.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
	addr.sin_port = htons((u_short)port);
	if (mode ==2) setsync(1);
	if (connect(sockid, (LPSOCKADDR)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
		if(WSAGetLastError() != WSAEWOULDBLOCK)
		{
			closesocket(sockid);
			return false;
		}

	if (mode ==1) setsync(1);
	return true;
}
Exemple #2
0
bool CSocket::tcpconnect(char *address, int port, int mode)
{
	SOCKADDR_IN addr;
	LPHOSTENT  hostEntry;
	if((sockid = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == SOCKET_ERROR)
        return false;
	if((hostEntry = gethostbyname(address))==NULL)
	{
		close(sockid);
		return false;
	}
	
	//..Fill out addres
	addr.sin_family = AF_INET;
	// ... FIX THIS
	//addr.sin_addr = hostEntry->h_addr ; // struct in_addr   sin_addr;     // see struct in_addr, below GetIp
	bcopy((char *)hostEntry->h_addr,(char *)&addr.sin_addr.s_addr,hostEntry->h_length);
	addr.sin_port = htons((u_short)port);
	if(mode ==2)setsync(1);

	//...Connect socket
	int rc = connect(sockid, (struct sockaddr *)&addr, sizeof(addr));
	if(rc == SOCKET_ERROR)
	{
		if(errno == EWOULDBLOCK)
		{
			close(sockid);
			return false;
		}
	}
	if(mode ==1)setsync(1);
	proc = TCP_CONNECT;
	return true;
}
Exemple #3
0
bool CSocket::udpconnectmcast( char* multicast , int port , int mode ){
	//...Create socket
	if((sockid = socket(AF_INET, SOCK_DGRAM, 0)) == SOCKET_ERROR)
        return false;    
	
	u_int reuse = 0;
	if (setsockopt(sockid,SOL_SOCKET,SO_REUSEADDR, &reuse, sizeof(u_int) ) < 0) {
			return false;
	}

	/* set up destination address */
	memset(&udpAddr,0,sizeof(udpAddr));
	udpAddr.sin_family = AF_INET;
	udpAddr.sin_addr.s_addr = inet_addr ( multicast );
	udpAddr.sin_port = htons(port);
	if(mode)setsync(1);

	/* bind to receive address */
	if (bind(sockid,(struct sockaddr *) &udpAddr,sizeof(udpAddr)) < 0) {
		return false;
	}

	/* use setsockopt() to request that the kernel join a multicast group */
	mAddr.imr_multiaddr.s_addr=inet_addr ( multicast );
	mAddr.imr_interface.s_addr=htonl( INADDR_ANY );

	//...Join membership
	if (setsockopt(sockid,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mAddr,sizeof(mAddr)) < 0) {
		return false;
	}
	proc = UDP_MULTICAST;
	return true;
}
Exemple #4
0
bool CSocket::tcpconnect(char *address, int port, int mode)
{
	sockaddr_in addr;
	hostent* hostEntry;
	if((sockid = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == SOCKET_ERROR)
        return false;
	if((hostEntry = gethostbyname(address)) == NULL)
	{
		closesocket(sockid);
		return false;
	}
	addr.sin_family = AF_INET;
	bcopy ( hostEntry->h_addr, &(addr.sin_addr.s_addr), hostEntry->h_length);
	addr.sin_port = htons((u_short)port);
	if(mode ==2)setsync(1);
	if(connect(sockid, (struct sockaddr*)&addr, sizeof(sockaddr)) == SOCKET_ERROR)
	{
        closesocket(sockid);
        return false;
	}
	if(mode ==1)setsync(1);
	return true;
}
bool CSocket::udpconnect(int port, int mode)
{
	SOCKADDR_IN addr;
	if ((sockid = socket(AF_INET, SOCK_DGRAM, 0)) == SOCKET_ERROR)
        return false;
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = INADDR_ANY;
	addr.sin_port = htons(port);
	if(mode)setsync(1);
	if(bind(sockid,(SOCKADDR *)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
	{
		closesocket(sockid);
		return false;
	}
	udp = true;
	return true;
}
bool CSocket::tcplisten(int port, int max, int mode)
{
	if ((sockid = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) return false;
	SOCKADDR_IN addr;
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = INADDR_ANY;
	addr.sin_port = htons(port);
	if (mode) setsync(1);
	if (bind(sockid, (LPSOCKADDR)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
	{
		closesocket(sockid);
		return false;
	}
	if (listen(sockid, max) == SOCKET_ERROR)
	{
		closesocket(sockid);
		return false;
	}
	return true;
}