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 <cstddef>
00033
00034
00035 namespace sf
00036 {
00037 class Packet;
00038 class IPAddress;
00039 template <typename> class Selector;
00040
00041
00046 class SFML_API SocketTCP
00047 {
00048 public :
00049
00054 SocketTCP();
00055
00063 void SetBlocking(bool Blocking);
00064
00074 bool Connect(unsigned short Port, const IPAddress& HostAddress);
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
00209 void Create();
00210
00212
00214 SocketHelper::SocketType mySocket;
00215 };
00216
00217 }
00218
00219
00220 #endif // SFML_SOCKETTCP_HPP