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
1.5.1