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_TCPSOCKET_HPP
00026 #define SFML_TCPSOCKET_HPP
00027
00029
00031 #include <SFML/Network/Socket.hpp>
00032
00033
00034 namespace sf
00035 {
00036 class TcpListener;
00037 class IpAddress;
00038 class Packet;
00039
00044 class SFML_API TcpSocket : public Socket
00045 {
00046 public :
00047
00052 TcpSocket();
00053
00064 unsigned short GetLocalPort() const;
00065
00077 IpAddress GetRemoteAddress() const;
00078
00090 unsigned short GetRemotePort() const;
00091
00109 Status Connect(const IpAddress& remoteAddress, unsigned short remotePort, Uint32 timeout = 0);
00110
00120 void Disconnect();
00121
00135 Status Send(const char* data, std::size_t size);
00136
00153 Status Receive(char* data, std::size_t size, std::size_t& received);
00154
00167 Status Send(Packet& packet);
00168
00183 Status Receive(Packet& packet);
00184
00185 private:
00186
00187 friend class TcpListener;
00188
00193 struct PendingPacket
00194 {
00195 PendingPacket();
00196
00197 Uint32 Size;
00198 std::size_t SizeReceived;
00199 std::vector<char> Data;
00200 };
00201
00203
00205 PendingPacket myPendingPacket;
00206 };
00207
00208 }
00209
00210
00211 #endif // SFML_TCPSOCKET_HPP
00212
00213