Пример #1
0
BOOL OnWSAAccept(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	int rc;
	if(WSAGETSELECTERROR(lParam)!=0)
	{
		MessageBox(0,TEXT("Ошибка при получении асинхронного запроса[1]"),TEXT("Ошибка"),MB_OK);
		ServerStop(hWnd);
		return FALSE;
	}
	int acc_sin_len = sizeof(acc_sin);
	rab_socket = accept(srv_socket,(LPSOCKADDR) &acc_sin,(int FAR*) &acc_sin_len);
	if(rab_socket == INVALID_SOCKET)
	{
		MessageBox(0,TEXT("Ошибка при получении асинхронного запроса[2]"),TEXT("Ошибка"),MB_OK);
		ServerStop(hWnd);
		return FALSE;
	}
	rc = WSAAsyncSelect(rab_socket,hWnd,WSA_NETEVENT,FD_READ|FD_CLOSE);
	if(rc>0)
	{
		MessageBox(0,TEXT("Ошибка при получении асинхронного запроса[3]"),TEXT("Ошибка"),MB_OK);
		ServerStop(hWnd);
		return FALSE;
	}
	TCHAR wtmp[255];
	wsprintf(wtmp,TEXT("[%lu] Хост %lu подключён"), clock(), acc_sin.sin_addr.s_addr);
	SendMessage(hLst,LB_ADDSTRING,0,(LPARAM)wtmp);
}
Пример #2
0
static void SigHandler(int sig) {
    string str = "Received signal ";

    if (sig == SIGINT) {
        str += "SIGINT";
    } else if (sig == SIGTERM) {
        str += "SIGTERM";
    } else if (sig == SIGQUIT) {
        str += "SIGQUIT";
    } else if (sig == SIGHUP) {
        str += "SIGHUP";
    } else {
        str += Util::toString(sig);
    }

    str += " ending...\n";
    fprintf(stdout,"%s",str.c_str());
    fflush(stdout);
    if (!bDaemon) {
        Log(str);
    } else {
        logging(true, str);
    }

    bIsClose = true;
    ServerStop();

    // restore to default...
    struct sigaction sigact;
    sigact.sa_handler = SIG_DFL;
    sigemptyset(&sigact.sa_mask);
    sigact.sa_flags = 0;

    sigaction(sig, &sigact, NULL);
}
Пример #3
0
//  Oбрабатывает сообщения в главном окне.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message)
	{
	case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
		// Разобрать выбор в меню:
		switch (wmId)
		{
		case IDM_START:
			ServerStart(hWnd);
			break;
		case IDM_STOP:
			ServerStop(hWnd);
			break;
		case IDM_ABOUT:
			DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
			break;
		case IDM_OPTIONS:
			DialogBox(hInst, MAKEINTRESOURCE(IDD_OPTIONS), hWnd, Options);
			break;
		case IDM_EXIT:
			DestroyWindow(hWnd);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: добавьте любой код отрисовки...
		EndPaint(hWnd, &ps);
		break;
	case WM_CREATE:
		OnCreate();
		break;
	case WM_SIZE:
		MoveWindow(hLst,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
		break;
	case WSA_ACCEPT:
		OnWSAAccept(hWnd,message,wParam,lParam);
		break;
	case WSA_NETEVENT:
		OnWSANetEvent(hWnd,message,wParam,lParam);
		break;
	case WM_DESTROY:
		WSACleanup();
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}
Пример #4
0
void ServerRestart(HWND hWnd, HWND hCaller, UINT uMsg)
{
	if(!gServer.hProcess)
		ServerStart(hWnd, hCaller, uMsg);
	else
	{
		ServerStop(hWnd, hCaller, uMsg);
		ServerStart(hWnd, hCaller, uMsg);
	}
}
Пример #5
0
static void WINAPI CtrlHandler(DWORD dwCtrl) {
	switch(dwCtrl) {
	    case SERVICE_CONTROL_SHUTDOWN:
	    case SERVICE_CONTROL_STOP:
	        ss.dwCurrentState = SERVICE_STOP_PENDING;
	        bIsClose = true;
	        ServerStop();
	    case SERVICE_CONTROL_INTERROGATE:
	        // Fall through to send current status.
	        break;
	    default:
	        break;
	}
	
	if(SetServiceStatus(ssh, &ss) == false) {
		AppendLog("CtrlHandler::SetServiceStatus failed ("+string((uint32_t)GetLastError())+")!");
	}
}
Пример #6
0
MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    //Window Settings
    this->setWindowTitle(tr("Test Chat Server"));
    this->resize(600,250);

    //Layout
    LayMain = new QVBoxLayout(this);
    EdtDisplay = new QTextEdit();
    EdtDisplay->setReadOnly(true);
    EdtDisplay->setFontFamily("courier");
    EdtDisplay->setFontPointSize(10);
    LayMain->addWidget(EdtDisplay);
    LayConfig = new QHBoxLayout();
    LayMain->addLayout(LayConfig);
    LblPort = new QLabel(tr("Port:"));
    LayConfig->addWidget(LblPort);
    BoxPort = new QSpinBox();
    BoxPort->setMinimum(1024);
    BoxPort->setMaximum(49151);
    BoxPort->setValue(2342);
    LayConfig->addWidget(BoxPort);
    LayConfig->addStretch();
    LayButtons = new QHBoxLayout();
    LayMain->addLayout(LayButtons);
    BtnStart = new QPushButton(tr("Server Starten"));
    BtnStop = new QPushButton(tr("Server Stoppen"));
    BtnQuit = new QPushButton(tr("Beenden"));
    LayButtons->addWidget(BtnStart);
    LayButtons->addWidget(BtnStop);
    LayButtons->addStretch();
    LayButtons->addWidget(BtnQuit);

    connect(BtnQuit, SIGNAL(clicked()), this, SLOT(close()));
    connect(BtnStart, SIGNAL(clicked()), this, SLOT(ServerStart()));
    connect(BtnStop, SIGNAL(clicked()), this, SLOT(ServerStop()));

    Server = new ChatServer();
    connect(Server, SIGNAL(newLog(QString)), this, SLOT(handleLog(QString)));

    handleLog(tr("Programm gestartet, Server läuft nicht."));
    handleLog(tr("Klicke auf Start um den Server zu starten."));
}
Пример #7
0
StepManiaLanServer::~StepManiaLanServer()
{
	ServerStop();
}
Пример #8
0
void AgentClose(HWND hWnd, HWND hCaller, UINT uMsg)
{
	ServerStop(hWnd, hCaller, uMsg);
	ShowWindow(hWnd, SW_HIDE);
	DestroyWindow(hWnd);
}