00001 // ExCSocketServeur.cpp: implementation of the ExCSocketServer class. 00002 // 00004 #include "ExCSocketServer.h" 00006 // Construction/Destruction 00008 00009 ExCSocketServer::ExCSocketServer(){Guard(ExCSocketServer::ExCSocketServer()) 00010 ExCSocket(); 00011 UnGuard 00012 } 00013 00014 ExCSocketServer::ExCSocketServer(int domaine,int protocole){Guard(ExCSocketServer::ExCSocketServer()) 00015 ExCSocket(domaine,protocole); 00016 UnGuard 00017 } 00018 00019 ExCSocketServer::~ExCSocketServer(){Guard(ExCSocketServer::~ExCSocketServer()) 00020 Close(); 00021 UnGuard 00022 } 00023 00024 int ExCSocketServer::Listen(){Guard(ExCSocketServer::Listen()) 00025 int hNewSocket=0; 00026 #ifdef _WIN32 00027 int tailleSockaddr_in; 00028 #else 00029 unsigned int tailleSockaddr_in; 00030 #endif 00031 00032 00033 tailleSockaddr_in= sizeof(struct sockaddr_in); 00034 hNewSocket=accept(m_hSocket,(struct sockaddr *)&m_AdresseSocket,&tailleSockaddr_in); 00035 if(hNewSocket==-1) 00036 { 00037 Close(); 00038 Trace(Erreur sur le listen) 00039 EXC 00040 } 00041 return hNewSocket; 00042 00043 UnGuard 00044 } 00045 00046 void ExCSocketServer::Init(void){Guard(CSocket::Init(void)) 00047 ExCSocket::Init(); 00048 #ifndef _WIN32 00049 if(bind(m_hSocket,(struct sockaddr *)&m_AdresseSocket,sizeof(struct sockaddr_in))==-1) 00050 { 00051 Trace(Erreur sur le bind su socket) 00052 EXC 00053 } 00054 if(listen(m_hSocket,SOMAXCONN)==-1) 00055 { 00056 close(m_hSocket); 00057 EXC 00058 } 00059 #endif 00060 UnGuard 00061 }