Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/Net/TcpServerSocket.cpp

Go to the documentation of this file.
00001 // Wolf for J2K Library
00002 // LGPL Licensed.
00003 // http://j2k.sourceforge.net/
00004 // Revision #1: Fred P. - Oct 2nd, 2001
00005 
00006 #ifndef __J2K__NET__TCPSERVERSOCKET_CPP__
00007 #define __J2K__NET__TCPSERVERSOCKET_CPP__
00008 
00009 #include <j2k/Net/TcpServerSocket.hpp>
00010 
00011 //
00012 // CONSTRUCTORS
00013 //
00014 
00015 TcpServerSocket::TcpServerSocket(int port = 0, int backlog = 4)  throw(int) 
00016   : ServerSocket((struct sockaddr *)NULL, PF_INET, SOCK_STREAM, 0)
00017 {
00018    struct sockaddr_in *s_in;
00019    lsa= &local_sa;
00020    s_in = (struct sockaddr_in *) &local_sa;
00021    localPort = port;
00022    s_in->sin_family = AF_INET;
00023    s_in->sin_port = htons(port);
00024    s_in->sin_addr.s_addr = htonl(INADDR_ANY);
00025    memset(&(s_in->sin_zero), '\0', 8);
00026    sleep(2);
00027    bind();
00028    ::listen(sck, backlog);
00029 }
00030   
00031 TcpServerSocket::TcpServerSocket(TcpServerSocket &original) throw(int)
00032   : ServerSocket((struct sockaddr *)NULL, PF_INET, SOCK_STREAM, 0)
00033 {
00034   
00035 }
00036   
00037 TcpServerSocket::TcpServerSocket(InetAddress& address, int port = 0, int backlog = 4) throw(int)
00038   : ServerSocket((struct sockaddr *)NULL, PF_INET, SOCK_STREAM, 0)
00039 {
00040   struct sockaddr_in *s_in = (struct sockaddr_in *)lsa;
00041   localPort = port;
00042   s_in->sin_family = AF_INET;
00043   s_in->sin_port = htons(localPort);
00044   s_in->sin_addr.s_addr = address.getAddress2();
00045   memset(&(s_in->sin_zero), '\0', 8);
00046   bind();
00047   ::listen(sck, backlog);
00048 }
00049 
00050 //
00051 // METHODS
00052 //
00053 
00054 InetAddress TcpServerSocket::getInetAddress()
00055 {  
00056   InetAddress I(inet_ntoa(((struct sockaddr_in*)lsa)->sin_addr));
00057   return I;
00058 }
00059     
00060 inline int TcpServerSocket::getLocalPort()
00061 {
00062   return localPort;
00063 }
00064 
00065 int TcpServerSocket::setSoTimeout(int timeout)
00066 {
00067 #if 0
00068   if(setSockOpt(SOL_ServerSocket,SO_TIMEOUT,(void *)&timeout,sizeof(int)) != 0)
00069      return -1;
00070 //     perror("TcpServerSocket::setSoTimeout() FAIL");
00071   
00072   return 0;
00073 #else
00074    errno = EBADF;
00075    return -1;
00076 #endif
00077 }
00078 
00079 int TcpServerSocket::getSoTimeout()
00080 {
00081    return -1;
00082 }
00083 
00084 /*
00085 Socket* TcpServerSocket::accept() throw(int)
00086 {
00087   int i;
00088   struct sockaddr remote_sa;
00089   struct sockaddr *rsa = &remote_sa;
00090 
00091   Socket *ret;
00092   socklen_t sorsa = sizeof(struct sockaddr);
00093   
00094   i = ::accept(sck, rsa, &sorsa);
00095   
00096   if (i == -1) {
00097     throw(errno);
00098   }
00099   else {
00100     ret = new Socket(i,s_domain, s_type, s_protocol);
00101     return ret;
00102   }
00103 }
00104 */
00105 
00106 #endif //__J2K__NET__TCPSERVERSOCKET_CPP__

Generated on Sun Oct 14 18:46:33 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001