- Main Page
- Namespaces
- Classes
- Files

- File List

# SocketTCP.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_SOCKETTCP_HPP
    00026 #define SFML_SOCKETTCP_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 SocketTCP
    00046 {
    00047 public :
    00048
    00053     SocketTCP();
    00054
    00062     void SetBlocking(bool Blocking);
    00063
    00074     Socket::Status Connect(unsigned short Port, const IPAddress& HostAddress, float Timeout = 0.f);
    00075
    00084     bool Listen(unsigned short Port);
    00085
    00096     Socket::Status Accept(SocketTCP& Connected, IPAddress* Address = NULL);
    00097
    00107     Socket::Status Send(const char* Data, std::size_t Size);
    00108
    00120     Socket::Status Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived);
    00121
    00130     Socket::Status Send(Packet& PacketToSend);
    00131
    00141     Socket::Status Receive(Packet& PacketToReceive);
    00142
    00149     bool Close();
    00150
    00158     bool IsValid() const;
    00159
    00168     bool operator ==(const SocketTCP& Other) const;
    00169
    00178     bool operator !=(const SocketTCP& Other) const;
    00179
    00190     bool operator <(const SocketTCP& Other) const;
    00191
    00192 private :
    00193
    00194     friend class Selector<SocketTCP>;
    00195
    00203     SocketTCP(SocketHelper::SocketType Descriptor);
    00204
    00211     void Create(SocketHelper::SocketType Descriptor = 0);
    00212
    00214     // Member data
    00216     SocketHelper::SocketType mySocket;
    00217     std::vector<char>        myPendingPacket;
    00218     Int32                    myPendingPacketSize;
    00219     bool                     myIsBlocking;
    00220 };
    00221
    00222 } // namespace sf
    00223
    00224
    00225 #endif // SFML_SOCKETTCP_HPP

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