AbstractSocket::Status UdpSocket::sendInt32(const int32& i, Host& h) { struct sockaddr_in peer; int32 toSend = htonl(i); if (m_socketfd == -1) if ((m_socketfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) return getStatus(); peer = h.getHost(); if (sendto(m_socketfd, &toSend, sizeof(int32), 0, reinterpret_cast<sockaddr*>(&peer), sizeof(peer)) == -1) return getStatus(); return AbstractSocket::Done; }
AbstractSocket::Status UdpSocket::sendCharArray(const char* str, const size_t& s, Host& h) { struct sockaddr_in peer; if (m_socketfd == -1) if ((m_socketfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) return getStatus(); peer = h.getHost(); if (sendto(m_socketfd, str, s, 0, reinterpret_cast<sockaddr*>(&peer), sizeof(peer)) == -1) return getStatus(); return AbstractSocket::Done; }
AbstractSocket::Status UdpSocket::sendString(const string& str, Host& h) { struct sockaddr_in peer; const char* data = str.c_str(); if (m_socketfd == -1) if ((m_socketfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) return getStatus(); peer = h.getHost(); if (sendto(m_socketfd, data, str.length(), 0, reinterpret_cast<sockaddr*>(&peer), sizeof(peer)) == -1) return getStatus(); return AbstractSocket::Done; }
AbstractSocket::Status UdpSocket::sendFrame(Frame& f, Host& h) { struct sockaddr_in peer; if (m_socketfd == -1) if ((m_socketfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) return getStatus(); peer = h.getHost(); uint32 size = f.getSize(); if(size > MaxDatagramSize) return UdpDatagramTooBig; int r = sendto(m_socketfd, f.getData(), size, 0, reinterpret_cast<sockaddr*>(&peer), sizeof(peer)); if(r<0) return getStatus(); return Done; }