2024-02-25 14:46:47 +00:00
|
|
|
#pragma once
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
#include "StarSocket.hpp"
|
|
|
|
|
|
|
|
namespace Star {
|
|
|
|
|
|
|
|
STAR_CLASS(UdpSocket);
|
|
|
|
STAR_CLASS(UdpServer);
|
|
|
|
|
|
|
|
// A Good default assumption for a maximum size of a UDP datagram without
|
|
|
|
// fragmentation
|
|
|
|
unsigned const MaxUdpData = 1460;
|
|
|
|
|
|
|
|
class UdpSocket : public Socket {
|
|
|
|
public:
|
|
|
|
UdpSocket(NetworkMode networkMode);
|
|
|
|
|
|
|
|
size_t receive(HostAddressWithPort* address, char* data, size_t size);
|
|
|
|
size_t send(HostAddressWithPort const& address, char const* data, size_t size);
|
|
|
|
};
|
|
|
|
|
|
|
|
class UdpServer {
|
|
|
|
public:
|
|
|
|
UdpServer(HostAddressWithPort const& address);
|
|
|
|
~UdpServer();
|
|
|
|
|
|
|
|
void close();
|
|
|
|
bool isListening() const;
|
|
|
|
|
|
|
|
size_t receive(HostAddressWithPort* address, char* data, size_t size, unsigned timeout);
|
|
|
|
size_t send(HostAddressWithPort const& address, char const* data, size_t size);
|
|
|
|
|
|
|
|
private:
|
|
|
|
HostAddressWithPort const m_hostAddress;
|
|
|
|
UdpSocketPtr m_listenSocket;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|