- Main Page
- Namespaces
- Classes
- Files

- File List

# SocketUDP.hpp

    00001
    00002 //
    00003 // SFML - Simple and Fast Multimedia Library
    00004 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
    00005 //
    00006 // This software is provided 'as-is', without any express or implied warranty.
    00007 // In no event will the authors be held liable for any damages arising from the use of this software.
    00008 //
    00009 // Permission is granted to anyone to use this software for any purpose,
    00010 // including commercial applications, and to alter it and redistribute it freely,
    00011 // subject to the following restrictions:
    00012 //
    00013 // 1. The origin of this software must not be misrepresented;
    00014 //    you must not claim that you wrote the original software.
    00015 //    If you use this software in a product, an acknowledgment
    00016 //    in the product documentation would be appreciated but is not required.
    00017 //
    00018 // 2. Altered source versions must be plainly marked as such,
    00019 //    and must not be misrepresented as being the original software.
    00020 //
    00021 // 3. This notice may not be removed or altered from any source distribution.
    00022 //
    00024
    00025 #ifndef SFML_SOCKETUDP_HPP
    00026 #define SFML_SOCKETUDP_HPP
    00027
    00029 // Headers
    00031 #include <SFML/Network/SocketHelper.hpp>
    00032 #include <vector>
    00033
    00034
    00035 namespace sf
    00036 {
    00037 class Packet;
    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
    00108     Socket::Status Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived, IPAddress& Address, unsigned short& Port);
    00109
    00120     Socket::Status Send(Packet& PacketToSend, const IPAddress& Address, unsigned short Port);
    00121
    00133     Socket::Status Receive(Packet& PacketToReceive, IPAddress& Address, unsigned short& Port);
    00134
    00141     bool Close();
    00142
    00150     bool IsValid() const;
    00151
    00158     unsigned short GetPort() const;
    00159
    00168     bool operator ==(const SocketUDP& Other) const;
    00169
    00178     bool operator !=(const SocketUDP& Other) const;
    00179
    00190     bool operator <(const SocketUDP& Other) const;
    00191
    00192 private :
    00193
    00194     friend class Selector<SocketUDP>;
    00195
    00203     SocketUDP(SocketHelper::SocketType Descriptor);
    00204
    00211     void Create(SocketHelper::SocketType Descriptor = 0);
    00212
    00214     // Member data
    00216     SocketHelper::SocketType mySocket;
    00217     unsigned short           myPort;
    00218     Uint32                   myPendingHeader;
    00219     Uint32                   myPendingHeaderSize;
    00220     std::vector<char>        myPendingPacket;
    00221     Int32                    myPendingPacketSize;
    00222     bool                     myIsBlocking;
    00223 };
    00224
    00225 } // namespace sf
    00226
    00227
    00228 #endif // SFML_SOCKETUDP_HPP

:: Copyright © 2007-2008 Laurent Gomila, all rights reserved :: Documentation generated by doxygen 1.5.2 ::