WinFuture-Forum.de: [c] Programm Zum Testen Der Ports Im Windowsnetzwerk - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[c] Programm Zum Testen Der Ports Im Windowsnetzwerk


#1 _Timo1982_

  • Gruppe: Gäste

geschrieben 18. Februar 2008 - 19:22

Sinn und Zweck des Programmes ist das Testen der Portfreigaben/Portweiterleitungen eines Netzwerkes/Routers/Firewall auf einen entsprechenden PC.

1. Allgemeines
Der Quellcode ist ziemlich "dirty". Da ich eine schnelle Lösung meines Problemes benötigte, habe ich das Programm, nachdem es lief, nur noch grob den ungeschriebenen Normen angepaßt. Es sind auch keine Plausibilitätsabfragen eingebaut. Wer nunmal zu der IP "Honk.33333.DRÖLF" auf Port "Auto-parken" connecten möchte, der kann es gerne versuchen :) Ich veröffentliche den Code dennoch, denn evtl. sucht ja auch jemand genau ein Programm, das diese Funktion bietet oder es findet sich ein eifriger Mensch, der das Programm weiter optimiert und den Quellcode sauber macht. Mir reicht es so :( .

2. Funktionsbeispiel
Auf PC-1 (IP: 192.168.0.1, welcher hinter einem Router hängt) soll getestet werden, ob der Router den Port 12345 auch zum PC-1 weiterleitet. PC-2 wird als Helfer zum Testen herangezogen. Auf dem PC-1 wird die "Port-empfänger.exe" gestartet. Diese fragt nach dem zu testenden Port mit "Port eingeben: ". Dort wird 12345 eingegeben danach ENTER. Danach zeigt das Programm den Status "Warte auf SENDER" an.
Jetzt kommt PC-2 ins Spiel. Auf diesem wird die "Port-sender.exe" gestartet. Hier gibt man nun bei "Verbinde zu IP: " die IP des PC-1 ein und dann ENTER. ACHTUNG: Hier aufpassen. Im lokalen Netz die lokale IP eingeben, wird die Abfrage per Internet gestellt, so muß dort die Internet-IP eingegeben werden. Danach kommt die Abfrage nach dem zu testenden Port "Port eingeben". Hier muß der gleiche Port wie schon zuvor eingegeben werden -> 12345. Nach einem ENTER wird die Verbindung aufgebaut (oder auch nicht :) )

Beide Programme liefern ein Ergebnis.
Wenn es geklappt hat, meldet die "Port-empfänger.exe"
Verbunden mit SENDER
Empfangen erfolgreich mit Port 12345

Bei "Port-sender.exe" steht
Senden erfolgreich auf Port 12345

Ansonsten erscheint bei der "Port-sender.exe" eine Fehlermeldung ala "PC unter angegebener IP und Port nicht erreichbar". Die "Port-empfänger.exe" gibt keine Fehlermeldung aus, sie wartet gutgläubig bis ans Ende der Zeit auf einen Call :woot:

Wer das Programm mal nur an einen Rechner testen möchte, quasi mal gucken was das Programm so macht, dem empfehle ich die IP 127.0.0.1 :woot:

3.Anwendungsebiete
Mein Anliegen war ein Programm, welches im lokalen Netzwerk einzelne Ports auf Weiterleitung schnell prüfen kann. Hindernisse gibt es im Alltag ja genug: Router, Firewalls,Probleme im BS, usw. Laut Feedback funktioniert das Programm auch über das Internet (was ja nicht verwunderlich ist :woot: ). Somit kann man also auch die NAT-Einstellungen eines Routers prüfen. Zweckentfremden kann man das Prog ja auf vielfältige Weise.

4.Quellcode
Port-empfänger.exe
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "psl_lib.h"

#define BACKLOG 10

int main(void)
{
	int MYPORT;

	SOCKET s, new_s;

	// Init des Sockets
	if (0!=PSL_InitModule())
	 {
	  printf("Fehler: Kann Socket nicht initialisieren\n");
	  return(-1);
	 }

	 printf("Port eingeben: ");
	 scanf("%d",&MYPORT);

	 s = PSL_GetListenSocket(MYPORT, BACKLOG);

	 if(s == INVALID_SOCKET)
	  {
	   printf("Fehler: Socket nicht erstellt");
	   return(-1);
	  }

	 printf("Warte auf SENDER \n");
	 new_s = PSL_Accept(s);
	 if(new_s == INVALID_SOCKET)
	  {
	   printf("Fehler beim Verbinden \n");
	  }

	 printf("Verbunden mit SENDER\n");

	 {   char Data[200] = "";

		 PSL_ReadData(new_s, (char *)&Data, sizeof(Data));
		 printf("%s %d\n ",Data,MYPORT);
	 }
	fflush(stdin);
	getchar();
	PSL_CloseSocket(new_s);
	PSL_CloseSocket(s);
	PSL_ExitModule();
	return 0;
}


Port-sender.exe
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "psl_lib.h"

int main(void)
{
	char HostName[256];
	int PORT;
	SOCKET s;

	// Init des Sockets
	if (0!=PSL_InitModule())
	 {
	  printf("Fehler: Kann Socket nicht initialisieren\n");
	  return(-1);
	 }

	// Daten eingeben
	printf("Verbinde zu IP: ");
	gets(HostName);
	printf("Port eingeben: ");
	scanf("%d",&PORT);
	// Socket öffnen & testen ob erreichbar
	s = PSL_GetConnectedSocket(HostName,PORT);
	if(INVALID_SOCKET == s)
	 {
	  puts("Fehler: PC unter eingegebener IP und Port nicht erreichbar");
	  fflush(stdin);
	  getchar();
	  return(-1);
	 }
	// Teststring senden
	printf("Verbinde zu %s:%d \n",HostName,PORT);
	 {
	  char Data[300] = "Empfangen erfolgreich mit Port";
	  if( (PSL_WriteData(s, (char *)&Data, sizeof(Data))) != -1)
	  {
	   printf("Senden erfolgreich auf Port %d \n",PORT);
	  }
	 }
	fflush(stdin);
	getchar();
	PSL_CloseSocket(s);
	PSL_ExitModule();
	return 0;
}


5.
Anregungen, Fragen, Kritik usw. immer gerne hier in diesem Thread. Desweiteren benutzt ihr die Programme auf euer eigenes Risiko. Passieren kann ja nichts, aber ich schreib sowas eh immer unter meine Programme. Quellcode ist ja einzusehen. Übervorsichtige Menschen scannen die beiden Dateien natürlich vorher nochmal mit nem Virenscanner ;)
0

Anzeige



Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0