auf offenen Port prüfen
-
Hi,
ich suche nach einer Möglichkeit im LAN die
Rechner auf offene Ports zu prüfen.
Also ob z.B. PC1 auf 139 offen ist.Das ganze soll,wenn es fertig ist, ein Netzwerktool
/Monitor werden, dass einem diverse Funktionen bereitstellt.
So soll dann auch von dem geprüften PC der Rechnername
ermittelt werden usw.
-
hi!
mach doch einfach einen Socket und versuche dich auf 139 zu verbinden. Kriegst du SOCKET_ERROR zurück, dann ist er zu...
das ist die trivialste Möglichkeit zu prüfen ob ein Port offen ist.SOCKADDR_IN addr; SOCKET sock; long rc; // Winsock starten WSADATA wsa; WSAStartup(MAKEWORD(2,0), &wsa); // Socket ersetellen sock = socket(AF_INET, SOCK_STREAM, 0); // Listensock an port 139 binden memset(&addr, 0, sizeof(SOCKADDR_IN)); addr.sin_family = AF_INET; addr.sin_port = htons(139); rc = getAddrFromString("HEIKES_COMPUTER", &addr); if (rc == SOCKET_ERROR) exit(-1); // Connecten rc = connect(sock, (SOCKADDR*)&addr, sizeof(SOCKADDR)); // Konnte Verbindung hergestellt werden? if (rc == SOCKET_ERROR) exit(-1); // Konnte nicht connectenmfG
matthias
-
Also bei mir kommt da ein fehler:
error C2065: 'GetAddrFromString' : nichtdeklarierter Bezeichner
Also die Windows-Socket hab ich drin. Fehlt mir vielleicht ne andere header-datei?hansi
-
diese funktion ist doch eh bei jedem socket example code dabei..
hier:
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) { unsigned long ip; HOSTENT* he; if (!hostnameOrIp || !addr) return SOCKET_ERROR; ip = inet_addr(hostnameOrIp); if (ip != INADDR_NONE) { addr->sin_addr.s_addr=ip; return 0; } else { he = gethostbyname(hostnameOrIp); if (!he) return SOCKET_ERROR; else memcpy(&(addr->sin_addr),he->h_addr_list[0],4); return 0; } }matthias
-
bei mir war se irgendwie net dabei. Vielen dank!
mfg
Hansi
-
Ich hab nochma ne frage:
Also ich hab jetz diesen rechner hier via Cross-Over-Kabel mit nem anderen verbunden. Der name des rechners simple und einfach "Laptop".
Das hab ich dann auch in getAddrFromString reingschrieben. Aber das erzeugt irgendwie nen SOCKET_ERROR.
Wie kann ich das problem beheben? Kann es vielleicht daran leigen,dass der laptop ne software-firewall auf der netzwerkkarte hat?
Kann ich auch irgendwie direkt die ip des zu scannenden rechners eingeben?thx
Hansi
P.S.:Sorry das ich jetz hier den thread zu mülle, bin aber leider noch ziemlicher anfäger
-
indem du statt
rc = getAddrFromString("HEIKES_COMPUTER", &addr);das schreibst:
rc = getAddrFromString("192.168.0.1", &addr);
-
funtzt!
thx
Hansi