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_SOCKETTCP_HPP
00026 #define SFML_SOCKETTCP_HPP
00027
00029
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
00216 SocketHelper::SocketType mySocket;
00217 std::vector<char> myPendingPacket;
00218 Int32 myPendingPacketSize;
00219 bool myIsBlocking;
00220 };
00221
00222 }
00223
00224
00225 #endif // SFML_SOCKETTCP_HPP