00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_SOCKETUDP_HPP
00026 #define SFML_SOCKETUDP_HPP
00027
00029
00031 #include <SFML/Network/SocketHelper.hpp>
00032 #include <SFML/Network/Packet.hpp>
00033 #include <cstddef>
00034
00035
00036 namespace sf
00037 {
00038 class IPAddress;
00039 template <typename> class Selector;
00040
00045 class SFML_API SocketUDP
00046 {
00047 public :
00048
00053 SocketUDP();
00054
00062 void SetBlocking(bool Blocking);
00063
00072 bool Bind(unsigned short Port);
00073
00080 bool Unbind();
00081
00093 Socket::Status Send(const char* Data, std::size_t Size, const IPAddress& Address, unsigned short Port);
00094
00107 Socket::Status Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived, IPAddress& Address);
00108
00119 Socket::Status Send(Packet& PacketToSend, const IPAddress& Address, unsigned short Port);
00120
00131 Socket::Status Receive(Packet& PacketToReceive, IPAddress& Address);
00132
00139 bool Close();
00140
00148 bool IsValid() const;
00149
00156 unsigned short GetPort() const;
00157
00166 bool operator ==(const SocketUDP& Other) const;
00167
00176 bool operator !=(const SocketUDP& Other) const;
00177
00188 bool operator <(const SocketUDP& Other) const;
00189
00190 private :
00191
00192 friend class Selector<SocketUDP>;
00193
00201 SocketUDP(SocketHelper::SocketType Descriptor);
00202
00207 void Create();
00208
00210
00212 SocketHelper::SocketType mySocket;
00213 unsigned short myPort;
00214 sf::Packet myPendingPacket;
00215 Int32 myPendingPacketSize;
00216 };
00217
00218 }
00219
00220
00221 #endif // SFML_SOCKETUDP_HPP