BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- C++ Feststellen ob lokaler Webserver läuft (http://www.black-board.net/thread.php?threadid=10986)


Geschrieben von phlox81 am 13.03.2003 um 12:54:

  Feststellen ob lokaler Webserver läuft

Ich schreibe gerade einen Editor für JSP und habe mir gedacht, das ich doch
die JSP-Dateien direkt über ShellExecute(...) an den Lokalen Server übergeben könnte,
in dem ich darüber den Standardbrowser aufrufe. Nur möchte ich vorher testen
ob der Tomcat-server auch gestartet ist, wenn nicht, soll er gestartet werden.
Wie stelle ich nun fest ob der Server läuft oder nicht ?

Devil



Geschrieben von Kalka am 13.03.2003 um 13:55:

 

lokaler Server? also du meinst nen Server der auf dem eigenem Rechner ist? ähhm, wenn es z.B. nen FTP-Server ist dann geb einfach ein telnet 127.0.0.1 21 - wenn er sich net Verbinden kann ist der Server nicht aktiv. Wie man in startet ist ja von Server zu Server anders, aber ich denke das wird wohl kaum das Problem sein...

cu Kalka



Geschrieben von phlox81 am 13.03.2003 um 14:28:

 

Nein, der Tomcat ist ein stinknormaler http-server der
servlets und JSPs ausführt, nix besonderes.

Hab allerdings schon eine Lösung gefunden,
in dem ich den Fenstertitel auslese, finde ich ob der Tomcat
bereits gestartet ist, da nicht im Hintergrund läuft.

Code :

Fenster auflisten:
in der .h:
code:
1:
2:
static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
static bool isOpen;


in der .cpp:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
//nach ganz oben (wegen Static)
BOOL CJSPeditorView::EnumWindowsProc(HWND hwnd, LPARAM lParam);
bool CJSPeditorView::isOpen;

//weiterunten...
BOOL CALLBACK CJSPeditorView::EnumWindowsProc(HWND hwnd, LPARAM lParam)
{//durchsucht alle fenstertitel, und setzt isOpen auf true, falls der tomcat dabei war...
	char WindowText[255];
	CString s;
    if ( ::IsWindowVisible(hwnd) && ::IsWindow(hwnd) && ::GetParent(hwnd)==NULL )
    {
        ::GetWindowText( hwnd, WindowText, 255 );
        s=WindowText;
		if(s == "Tomcat 3.2")
			isOpen = true;
		
    }
	return TRUE;
}

void CJSPeditorView::OnDateiAusfhren() 
{//Funktion speichert die datei ab, und ruft sie im Browser auf.
	this->GetDocument()->OnSaveDocument(GetDocument()->GetPathName());//Datei speichern
	isOpen = false;
	EnumWindows(/*(WNDENUMPROC)*/EnumWindowsProc,NULL);
	if(isOpen)//Tomcat läuft ?
		ShellExecute(NULL,"open","mozilla.exe","http://localhost/root/"+ this->GetDocument()->GetTitle(),NULL,SW_SHOW);
	else
	{
		WinExec("E:\Weller\jakarta-tomcat-3.2.4\bin\startup.bat",SW_SHOW);//Tomcat starten
		MessageBox("Tomcat starting, please wait");
		_sleep(8000);//damit der Browser nicht vor dem Tomcat da ist, sonst kann er die .jsp nicht auflösen
		ShellExecute(NULL,"open","mozilla.exe","http://localhost/root/"+ this->GetDocument()->GetTitle(),NULL,SW_SHOW);//.jsp auflösen
	}
}


Devil


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH