Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


Socket.h

00001 #ifndef STK_SOCKET_H
00002 #define STK_SOCKET_H
00003 
00004 #include "Stk.h"
00005 
00006 #if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__))
00007 
00008   #include <sys/socket.h>
00009   #include <sys/types.h>
00010   #include <arpa/inet.h>
00011   #include <netdb.h>
00012   #include <unistd.h>
00013   #include <fcntl.h>
00014   #include <netinet/in.h>
00015   #include <netinet/tcp.h>
00016 
00017 #elif defined(__OS_WINDOWS__)
00018 
00019   #include <winsock.h>
00020 
00021 #endif
00022 
00023 namespace stk {
00024 
00025 /***************************************************/
00036 /***************************************************/
00037 
00038 class Socket : public Stk
00039 {
00040  public:
00041 
00042   enum ProtocolType {
00043     PROTO_TCP,
00044     PROTO_UDP
00045   };
00046 
00048   Socket();
00049 
00051   virtual ~Socket();
00052 
00054   static void close( int socket );
00055 
00057   int id( void ) const { return soket_; };
00058 
00060   int port( void ) const { return port_; };
00061 
00063   static bool isValid( int socket ) { return socket != -1; };
00064 
00066   static void setBlocking( int socket, bool enable );
00067 
00069   virtual int writeBuffer(const void *buffer, long bufferSize, int flags = 0) = 0;
00070 
00072   virtual int readBuffer(void *buffer, long bufferSize, int flags = 0) = 0;
00073 
00075   static int writeBuffer(int socket, const void *buffer, long bufferSize, int flags );
00076 
00078   static int readBuffer(int socket, void *buffer, long bufferSize, int flags );
00079 
00080  protected:
00081 
00082   int soket_;
00083   int port_;
00084 
00085 };
00086 
00087 } // stk namespace
00088 
00089 #endif

The Synthesis ToolKit in C++ (STK)
©1995-2010 Perry R. Cook and Gary P. Scavone. All Rights Reserved.