Пример #1
0
bool EosUdpOut_Win::SendPacket(EosLog &log, const char *buf, int len)
{
	if( IsInitialized() )
	{
		if(buf && len>0)
		{
			int bytesSent = sendto(m_Socket, buf, len, 0, reinterpret_cast<sockaddr*>(&m_Addr), static_cast<int>(sizeof(m_Addr)));
			if(bytesSent == SOCKET_ERROR)
			{
				char text[256];
				sprintf(text, "%s sendto failed with error %d", EosUdpIn::GetLogPrefix(m_LogPrefix), WSAGetLastError());
				log.AddError(text);
			}
			else if(bytesSent != len)
			{
				char text[256];
				sprintf(text, "%s sendto failed, sent %d of %d bytes", EosUdpIn::GetLogPrefix(m_LogPrefix), bytesSent, len);
				log.AddError(text);
			}
			else
				return true;
		}
	}
	else
	{
		char text[256];
		sprintf(text, "%s SendPacket failed, not initialized", EosUdpIn::GetLogPrefix(m_LogPrefix));
		log.AddError(text);
	}

	return false;
}
Пример #2
0
bool EosUdpOut_Win::Initialize(EosLog &log, const char *ip, unsigned short port)
{
	if(	!IsInitialized() )
	{
		EosUdpIn::SetLogPrefix("udp out", ip, port, m_LogPrefix);

		if( ip )
		{
			WSADATA wsaData;
			int result = WSAStartup(MAKEWORD(2,2), &wsaData);
			if(result == 0)
			{
				m_Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
				if(m_Socket != INVALID_SOCKET)
				{
					memset(&m_Addr, 0, sizeof(m_Addr));
					m_Addr.sin_family = AF_INET;
					m_Addr.sin_addr.S_un.S_addr = inet_addr(ip);
					m_Addr.sin_port = htons(port);

					char text[256];
					sprintf(text, "%s socket intialized", EosUdpIn::GetLogPrefix(m_LogPrefix));
					log.AddInfo(text);
				}
				else
				{
					char text[256];
					sprintf(text, "%s socket failed with error %d", EosUdpIn::GetLogPrefix(m_LogPrefix), WSAGetLastError());
					log.AddError(text);
					WSACleanup();
				}
			}
			else
			{
				char text[256];
				sprintf(text, "%s WSAStartup failed with error %d", EosUdpIn::GetLogPrefix(m_LogPrefix), result);
				log.AddError(text);
				WSACleanup();
			}
		}
		else
		{
			char text[256];
			sprintf(text, "%s initialize failed, invalid arguments", EosUdpIn::GetLogPrefix(m_LogPrefix));
			log.AddError(text);
		}
	}
	else
	{
		char text[256];
		sprintf(text, "%s initialize failed, already initialized", EosUdpIn::GetLogPrefix(m_LogPrefix));
		log.AddError(text);
	}

	return IsInitialized();
}
Пример #3
0
bool EosUdpOut_Mac::Initialize(EosLog &log, const char *ip, unsigned short port)
{
	if(	!IsInitialized() )
	{
		EosUdpIn::SetLogPrefix("udp output", ip, port, m_LogPrefix);
	
		if( ip )
		{
			m_Socket = socket(AF_INET, SOCK_DGRAM, 0);
			if(m_Socket != -1)
			{
				memset(&m_Addr, 0, sizeof(m_Addr));
				m_Addr.sin_family = AF_INET;
				m_Addr.sin_addr.s_addr = inet_addr(ip);
				m_Addr.sin_port = htons(port);
				
				char text[256];
				sprintf(text, "%s socket intialized", EosUdpIn::GetLogPrefix(m_LogPrefix));
				log.AddInfo(text);
			}
			else
			{
				char text[256];
				sprintf(text, "%s socket failed with error %d", EosUdpIn::GetLogPrefix(m_LogPrefix), errno);
				log.AddError(text);
			}
		}
		else
		{
			char text[256];
			sprintf(text, "%s initialize failed, invalid arguments", EosUdpIn::GetLogPrefix(m_LogPrefix));
			log.AddError(text);
		}
	}
	else
	{
		char text[256];
		sprintf(text, "%s initialize failed, already initialized", EosUdpIn::GetLogPrefix(m_LogPrefix));
		log.AddWarning(text);
	}

	return IsInitialized();
}
Пример #4
0
bool EosUdpIn_Win::Initialize(EosLog &log, const char *ip, unsigned short port)
{
	if(	!IsInitialized() )
	{
		SetLogPrefix("udp in", ip, port, m_LogPrefix);

		if( ip )
		{
			WSADATA wsaData;
			int result = WSAStartup(MAKEWORD(2,2), &wsaData);
			if(result == 0)
			{
				m_Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
				if(m_Socket != INVALID_SOCKET)
				{
					int optval = 1;
					if(setsockopt(m_Socket,SOL_SOCKET,SO_REUSEADDR,(const char*)&optval,sizeof(optval)) == SOCKET_ERROR)
					{
						char text[256];
						sprintf(text, "%s setsockopt(SO_REUSEADDR) failed with error %d", GetLogPrefix(m_LogPrefix), WSAGetLastError());
						log.AddWarning(text);
					}

					sockaddr_in addr;
					memset(&addr, 0, sizeof(addr));
					addr.sin_family = AF_INET;
					addr.sin_addr.S_un.S_addr = inet_addr(ip);
					addr.sin_port = htons(port);
					result = bind(m_Socket, reinterpret_cast<sockaddr*>(&addr), sizeof(addr));
					if(result != SOCKET_ERROR)
					{
						char text[256];
						sprintf(text, "%s socket intialized", GetLogPrefix(m_LogPrefix));
						log.AddInfo(text);
					}
					else
					{
						char text[256];
						sprintf(text, "%s bind failed with error %d", GetLogPrefix(m_LogPrefix), WSAGetLastError());
						log.AddError(text);
						closesocket(m_Socket);
						m_Socket = INVALID_SOCKET;
						WSACleanup();
					}
				}
				else
				{
					char text[256];
					sprintf(text, "%s socket failed with error %d", GetLogPrefix(m_LogPrefix), WSAGetLastError());
					log.AddError(text);
					WSACleanup();
				}
			}
			else
			{
				char text[256];
				sprintf(text, "%s WSAStartup failed with error %d", GetLogPrefix(m_LogPrefix), result);
				log.AddError(text);
				WSACleanup();
			}
		}
		else
		{
			char text[256];
			sprintf(text, "%s initialize failed, invalid arguments", GetLogPrefix(m_LogPrefix));
			log.AddError(text);
		}
	}
	else
	{
		char text[256];
		sprintf(text, "%s initialize failed, already initialized", GetLogPrefix(m_LogPrefix));
		log.AddWarning(text);
	}

	return IsInitialized();
}
Пример #5
0
bool EosUdpIn_Mac::Initialize(EosLog &log, const char *ip, unsigned short port)
{
	if(	!IsInitialized() )
	{
		SetLogPrefix("udp input", ip, port, m_LogPrefix);
	
		if( ip )
		{
			m_Socket = socket(AF_INET, SOCK_DGRAM, 0);
			if(m_Socket != -1)
			{
				int optval = 1;
				if(setsockopt(m_Socket,SOL_SOCKET,SO_REUSEADDR,(const char*)&optval,sizeof(optval)) == -1)
				{
					char text[256];
					sprintf(text, "%s setsockopt(SO_REUSEADDR) failed with error %d", GetLogPrefix(m_LogPrefix), errno);
					log.AddWarning(text);
				}
				
				sockaddr_in addr;
				memset(&addr, 0, sizeof(addr));
				addr.sin_family = AF_INET;
				addr.sin_addr.s_addr = inet_addr(ip);
				addr.sin_port = htons(port);
				int result = bind(m_Socket, reinterpret_cast<sockaddr*>(&addr), static_cast<socklen_t>(sizeof(addr)));
				if(result != -1)
				{
					char text[256];
					sprintf(text, "%s socket intialized", GetLogPrefix(m_LogPrefix));
					log.AddInfo(text);
				}
				else
				{
					char text[256];
					sprintf(text, "%s bind failed with error %d", GetLogPrefix(m_LogPrefix), errno);
					log.AddError(text);
					close(m_Socket);
					m_Socket = -1;
				}
			}
			else
			{
				char text[256];
				sprintf(text, "%s socket failed with error %d", GetLogPrefix(m_LogPrefix), errno);
				log.AddError(text);
			}
		}
		else
		{
			char text[256];
			sprintf(text, "%s initialize failed, invalid arguments", GetLogPrefix(m_LogPrefix));
			log.AddError(text);
		}
	}
	else
	{
		char text[256];
		sprintf(text, "%s initialize failed, already initialized", GetLogPrefix(m_LogPrefix));
		log.AddWarning(text);
	}

	return IsInitialized();
}