include/ns_socket.h

00001 /* -*- C++ -*- */
00002 /*
00003   netstream, set of classes for TCP/IP networking
00004   Copyright (c) 2006, Jan Bartipan < barzto at gmail dot com >
00005   All rights reserved.
00006   
00007   Redistribution and use in source and binary forms, with or without 
00008   modification, are permitted provided that the following conditions 
00009   are met:
00010   
00011   - Redistributions of source code must retain the above copyright 
00012   notice, this list of conditions and the following disclaimer.
00013   - Redistributions in binary form must reproduce the above copyright 
00014   notice, this list of conditions and the following disclaimer in 
00015   the documentation and/or other materials provided with the 
00016   distribution.
00017   - Neither the names of its contributors may be used to endorse or 
00018   promote products derived from this software without specific 
00019   prior written permission.
00020   
00021   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00022   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
00023   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
00024   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
00025   COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
00026   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
00027   BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
00028   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
00029   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
00030   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
00031   WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
00032   POSSIBILITY OF SUCH DAMAGE.
00033 
00034  */
00035 
00036 #ifndef __NS_SOCKET_H
00037 #define __NS_SOCKET_H
00038 
00039 #include "ns_stdafx.h"
00040 #include "ns_host.h"
00041 
00042 namespace ns
00043 {
00044 //====================================================
00045 // socket interface
00046 //====================================================
00047 
00048 #define NS_SOCKET_BUFFER_LEN 1024
00049 
00052    class Socket
00053    {
00054       protected:
00055 #ifdef BSDSOCK
00056 
00059          int sockId;
00060 #endif
00061 #ifdef WSOCK
00062 
00065          SOCKET sockId;
00066 #endif
00067 
00070          Socket()
00071          {}
00072       public:
00073 
00074 
00080          void get(char* buffer, int size);
00081 
00087          void set(char* buffer, int size);
00088 
00092          void destroy();
00093    };
00094 
00095 
00099    class ClientSocket: public Socket{
00100       public:
00104          ClientSocket(){}
00105 
00110          ClientSocket(Host host);        // connect to host
00111    };
00112 
00116    class AcceptedSocket: public Socket
00117    {
00118       protected:
00122          Host host;
00123       public:
00127          AcceptedSocket() {}
00128 #ifdef BSDSOCK
00129 
00132          AcceptedSocket(Host h,int fd): host(h) {sockId = fd;}
00133 #endif
00134 #ifdef WSOCK
00135 
00138          AcceptedSocket(Host h,SOCKET fd): host(h) {sockId = fd;}
00139 #endif
00140    };
00141 
00145    class ServerSocket: public Socket
00146    {
00147       public:
00151          ServerSocket(){}
00152 
00157          ServerSocket(unsigned int port);
00158 
00163          AcceptedSocket wait();
00164    };
00165 
00166 } // end of namespace ns
00167 
00168 #endif

Generated on Mon Aug 6 09:36:19 2007 for NetStreamlibrary by  doxygen 1.5.1