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_SOCKET_HPP
00026 #define SFML_SOCKET_HPP
00027
00029
00031 #include <SFML/Network/SocketHandle.hpp>
00032 #include <SFML/System/NonCopyable.hpp>
00033 #include <vector>
00034
00035
00036 namespace sf
00037 {
00038 class SocketSelector;
00039
00044 class SFML_API Socket : NonCopyable
00045 {
00046 public :
00047
00052 enum Status
00053 {
00054 Done,
00055 NotReady,
00056 Disconnected,
00057 Error
00058 };
00059
00064 enum
00065 {
00066 AnyPort = 0
00067 };
00068
00069 public :
00070
00075 virtual ~Socket();
00076
00094 void SetBlocking(bool blocking);
00095
00104 bool IsBlocking() const;
00105
00106 protected :
00107
00112 enum Type
00113 {
00114 Tcp,
00115 Udp
00116 };
00117
00126 Socket(Type type);
00127
00138 SocketHandle GetHandle() const;
00139
00146 void Create();
00147
00157 void Create(SocketHandle handle);
00158
00165 void Close();
00166
00167 private :
00168
00169 friend class SocketSelector;
00170
00172
00174 Type myType;
00175 SocketHandle mySocket;
00176 bool myIsBlocking;
00177 };
00178
00179 }
00180
00181
00182 #endif // SFML_SOCKET_HPP
00183
00184