diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2003-10-17 15:35:43 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2003-10-17 15:35:43 +0000 |
| commit | fc2f5b2cd655f1391f2abda1b39e37cdec98a951 (patch) | |
| tree | 312efcea86a319de407a7c314fb981fb1c71019a /lib/network/serversocket.cpp | |
| download | enigma2-fc2f5b2cd655f1391f2abda1b39e37cdec98a951.tar.gz enigma2-fc2f5b2cd655f1391f2abda1b39e37cdec98a951.zip | |
Initial revision
Diffstat (limited to 'lib/network/serversocket.cpp')
| -rw-r--r-- | lib/network/serversocket.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/network/serversocket.cpp b/lib/network/serversocket.cpp new file mode 100644 index 00000000..fe2737eb --- /dev/null +++ b/lib/network/serversocket.cpp @@ -0,0 +1,55 @@ +#include <lib/network/serversocket.h> + +bool eServerSocket::ok() +{ + return okflag; +} + +void eServerSocket::notifier(int) +{ + int clientfd, clientlen; + struct sockaddr_in client_addr; + + eDebug("[SERVERSOCKET] incoming connection!"); + + clientlen=sizeof(client_addr); + clientfd=accept(getDescriptor(), + (struct sockaddr *) &client_addr, + (socklen_t*)&clientlen); + if(clientfd<0) + eDebug("[SERVERSOCKET] error on accept()"); + + newConnection(clientfd); +} + +eServerSocket::eServerSocket(int port, eMainloop *ml): eSocket(ml) +{ + struct sockaddr_in serv_addr; + + serv_addr.sin_family=AF_INET; + serv_addr.sin_addr.s_addr=INADDR_ANY; + serv_addr.sin_port=htons(port); + + okflag=1; + int val=1; + + setsockopt(getDescriptor(), SOL_SOCKET, SO_REUSEADDR, &val, 4); + + if(bind(getDescriptor(), + (struct sockaddr *) &serv_addr, + sizeof(serv_addr))<0) + { + eDebug("[SERVERSOCKET] ERROR on bind() (%m)"); + okflag=0; + } + listen(getDescriptor(), 0); + + rsn->setRequested(eSocketNotifier::Read); +} + +eServerSocket::~eServerSocket() +{ +#if 0 + eDebug("[SERVERSOCKET] destructed"); +#endif +} |
