00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "stdafx.h"
00024 #include "ServerAgent.h"
00025 #include "MicoleAgentThread.h"
00026 #include "MicoleStringStream.h"
00027
00028 #include "DServerAgent.h"
00029
00030
00031 ServerAgent::ServerAgent(int port)
00032 : MicoleAgentThread("ServerAgent","ServerAgent")
00033 {
00034 _port = port;
00035 start();
00036 }
00037
00038 ServerAgent::~ServerAgent()
00039 {}
00040
00041 void ServerAgent::run ()
00042 {
00043 WSADATA WSAData;
00044 WSAStartup(MAKEWORD(2,0), &WSAData);
00045 SOCKET sock;
00046 SOCKET csock;
00047 SOCKADDR_IN sin;
00048 SOCKADDR_IN csin;
00049 sock = socket(AF_INET, SOCK_STREAM, 0);
00050 sin.sin_addr.s_addr = INADDR_ANY;
00051 sin.sin_family = AF_INET;
00052 sin.sin_port = htons(_port);
00053 bind(sock, (SOCKADDR *)&sin, sizeof(sin));
00054 listen(sock, 0);
00055 while(getState()==ACTIVE)
00056 {
00057 int sinsize = sizeof(csin);
00058 if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
00059 _DServList.push_back(new DServerAgent(csock,this));
00060 }
00061 }
00062
00063 void ServerAgent::sendOnAllClients(string s)
00064 {
00065 for (list<DServerAgent*>::iterator k = _DServList.begin() ; k != _DServList.end() ; k++)
00066 (*k)->sendOnNetwork(s);
00067 }
00068
00069
00073 void ServerAgent::prepareToStop(int argc, const char **argv)
00074 {
00075 }
00076
00077 void ServerAgent::prepareToSuspend(int argc, const char **argv)
00078 {
00079 }