00001
00002
00003
00004
00005
00006 #ifndef __J2K__NET__TCPSERVERSOCKET_CPP__
00007 #define __J2K__NET__TCPSERVERSOCKET_CPP__
00008
00009 #include <j2k/Net/TcpServerSocket.hpp>
00010
00011
00012
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
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
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
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 #endif //__J2K__NET__TCPSERVERSOCKET_CPP__