AbstractSocket::Status UdpSocket::receiveCharArray(char** str, Host& peer) { *str = new char[MaxDatagramSize]; struct sockaddr_in from; int dataRead; int len = sizeof(from); if ((dataRead = recvfrom(m_socketfd, *str, MaxDatagramSize, 0, reinterpret_cast<sockaddr*>(&from), reinterpret_cast<socklen_t*>(&len))) == -1) return getStatus(); peer.setHost(from); return Done; }
AbstractSocket::Status UdpSocket::receiveString(string& str, Host& peer) { char* buffer = new char[MaxDatagramSize]; struct sockaddr_in from; int dataRead; int len = sizeof(from); if ((dataRead = recvfrom(m_socketfd, buffer, MaxDatagramSize, 0, reinterpret_cast<sockaddr*>(&from), reinterpret_cast<socklen_t*>(&len))) == -1) return getStatus(); peer.setHost(from); str.assign(buffer, dataRead); return Done; }
AbstractSocket::Status UdpSocket::receiveInt32(int32& i, Host& peer) { int32 buffer; struct sockaddr_in from; int dataRead; int len = sizeof(from); if ((dataRead = recvfrom(m_socketfd, &buffer, sizeof(int32), 0, reinterpret_cast<sockaddr*>(&from), reinterpret_cast<socklen_t*>(&len))) == -1) return getStatus(); peer.setHost(from); i = ntohl(buffer); return Done; }
AbstractSocket::Status UdpSocket::receiveFrame(Frame &f, Host& peer) { uint32 size; struct sockaddr_in from; uint32 dataRead; int len = sizeof(from); char *buffer; buffer = new char[MaxDatagramSize]; if ((dataRead = recvfrom(m_socketfd, buffer, MaxDatagramSize, 0, reinterpret_cast<sockaddr*>(&from), reinterpret_cast<socklen_t*>(&len))) == -1) return getStatus(); f.setData(buffer, dataRead); peer.setHost(from); return Done; }