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; }
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(); }
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(); }
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(); }
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(); }