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 <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 SocketTCP
00046 {
00047 public :
00048
00053 SocketTCP();
00054
00062 void SetBlocking(bool Blocking);
00063
00073 bool Connect(unsigned short Port, const IPAddress& HostAddress);
00074
00083 bool Listen(unsigned short Port);
00084
00095 Socket::Status Accept(SocketTCP& Connected, IPAddress* Address = NULL);
00096
00106 Socket::Status Send(const char* Data, std::size_t Size);
00107
00119 Socket::Status Receive(char* Data, std::size_t MaxSize, std::size_t& SizeReceived);
00120
00129 Socket::Status Send(Packet& PacketToSend);
00130
00140 Socket::Status Receive(Packet& PacketToReceive);
00141
00148 bool Close();
00149
00157 bool IsValid() const;
00158
00167 bool operator ==(const SocketTCP& Other) const;
00168
00177 bool operator !=(const SocketTCP& Other) const;
00178
00189 bool operator <(const SocketTCP& Other) const;
00190
00191 private :
00192
00193 friend class Selector<SocketTCP>;
00194
00202 SocketTCP(SocketHelper::SocketType Descriptor);
00203
00208 void Create();
00209
00211
00213 SocketHelper::SocketType mySocket;
00214 sf::Packet myPendingPacket;
00215 Int32 myPendingPacketSize;
00216 };
00217
00218 }
00219
00220
00221 #endif // SFML_SOCKETTCP_HPP