00001
00002
00003
00004
00005
00006 #ifndef __J2K__NET__SOCKET_HPP__
00007 #define __J2K__NET__SOCKET_HPP__
00008
00009
00010
00011
00012
00013 #include <j2k/Net/include.hpp>
00014
00015 class Socket {
00016
00017 public:
00018 Socket(sockaddr* sa = NULL, int domain = PF_INET, int type = SOCK_STREAM, int protocol = 0) throw(int);
00019 Socket(Socket& original) throw(int);
00020 Socket(int set_socket, int domain = PF_INET, int type = SOCK_STREAM, int protocol = 0) throw(int);
00021
00022 int bind(struct sockaddr* sa = NULL);
00023 int connect(struct sockaddr* sa = NULL);
00024 void close();
00025 void shutdownInput();
00026 void shutdownOutput();
00027 void shutdown(int how = 2);
00028
00029 struct sockaddr* getSockAddr();
00030 struct sockaddr* getLocalSockAddr();
00031 int getSocket();
00032 int getDomain();
00033 int getType();
00034 int getProtocol();
00035
00036 int setSockOpt(int level, int optname, void* optval, socklen_t optlen);
00037 void* getSockOpt(int level, int optname, void* optval, socklen_t* optlen);
00038
00039 int read(void * buffer, size_t len, int flags = 0);
00040 int send(void * buffer, size_t len, int flags = 0);
00041
00042 protected:
00043 int s_domain,s_type,s_protocol;
00044 struct sockaddr *rsa;
00045 struct sockaddr *lsa;
00046 struct sockaddr remote_sa;
00047 struct sockaddr local_sa;
00048 int sck;
00049 };
00050
00051 #endif // __J2K__NET__SOCKET_HPP__