Merkwürdige fehler



  • Ich habe einen Portscanner geschrieben aber irgendwie kommen sinnlose Fehler:
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(3) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(24) : error C2065: 'cout' : nichtdeklarierter Bezeichner
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(24) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [57]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(25) : error C2065: 'cin' : nichtdeklarierter Bezeichner
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(25) : error C2297: '>>' : Ungültig, da der rechte Operand vom Typ 'char [40]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(27) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [49]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(28) : warning C4552: '>>' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(30) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [39]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(31) : warning C4552: '>>' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(35) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [23]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(35) : error C2065: 'endl' : nichtdeklarierter Bezeichner
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(40) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [7]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(42) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [7]' ist
    c:\programme\microsoft visual studio\myprojects\posrt\ds.cpp(53) : error C2297: '<<' : Ungültig, da der rechte Operand vom Typ 'char [15]' ist

    Hier der Code:

    #include <windows.h>
    #include <stdio.h>
    using namespace std;
    
    int p;
    char ip[40];
    SOCKET s;
    int startport;
    int endport;
    int x;
    struct hostent *host;
    struct sockaddr_in srv;
    
    bool PortCheck(int);
    
    int main()
    {
    
    	cout << "Bitte geben sie die IP oder den Hostname des Servers ein";
    	cin >> ip;
    
    	cout << "\nGeben sie die Anfangsportnummer des Servers ein";
    	cin >> startport;
    
    	cout << "\nGeben sie die Endnummer des Ports ein";
    	cin >> endport;
    
    	host = gethostbyname(ip);
    
    	cout << "Scanner der Ports von " << startport << " bis " << endport << endl;
    
    	for(x = startport; x <= endport; ++x)
    	{
    		if(PortCheck(x) == false) {
    			cout << "Port: " <<  x << " geschlossen" << endl;
    		} else {
    			cout << "Port: " << x << " offen" << endl;
    		}
    	}
    	return 0;
    }
    
    bool PortCheck(int p)
    {
    	s = socket(AF_INET, SOCK_STREAM, 0);
    
    	if(s == INVALID_SOCKET) {
    		cout << "Invalid Socket" << endl;
    	}
    
    	srv.sin_family = AF_INET;
    	srv.sin_port   = htons(p);
    	srv.sin_addr.s_addr = *((unsigned long *) host->h_addr);
    
    	if(connect(s, (struct sockaddr *)&srv, sizeof(srv) == -1))
    	{
    		closesocket(s);
    		return false;
    	} else {
    		closesocket(s);
    		return true;
    	}
    }
    


  • Jajaja da hat wohl jemand einen Portscanner geschrieben. Sehr unlobenswert 😉 aber ich helf dir trotzdem. Du solltest 1. evtl. mal die #include <iostream.h>
    machen. Das ist nämlich standartmäßig nicht enthalten. Also ohne #include <iostream.h> kein cout,cin folglich löst << >> einen Fehler aus. Und der erste Fehler erledigt sich gleich mit oder ich bin ratlos. (ich würde dir empfehlen NMapWin zu benutzen da hat man wenigstens keinen Ärger mit :D)



  • mwoidt schrieb:

    Du solltest 1. evtl. mal die #include <iostream.h>
    machen.

    Nicht #include <iostream> ?

    Gibts mit .h denn eigentlich keine namespaces? 😕



  • Nicht #include <iostream> ?

    Das wäre von Vorteil, zumindest wenn man die Fehler loswerden will.

    Gibts mit .h denn eigentlich keine namespaces?

    Ohne mindestens einen der neuen C++ Standardheader gibt es zumindest keinen Namespace std. Es sei denn du definierst ihn selbst 🙂



  • mh, ich habe mal den Quelltext kopiert & kompilliert. Da gab's einen Fehler:

    --------------------Konfiguration: portscannerung - Win32 Debug--------------------
    Kompilierung läuft...
    main.cpp
    D:\Eigene Dateien\Visual C++\portscannerung\main.cpp(4) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
    Fehler beim Ausführen von cl.exe.

    portscannerung.exe - 1 Fehler, 0 Warnung(en)

    Gut. Nehmen wir mal die Zeile ...

    using namespace std;
    

    ... weg. Das mochte mein Kompiler garnicht:

    --------------------Konfiguration: portscannerung - Win32 Debug--------------------
    Kompilierung läuft...
    main.cpp
    Linker-Vorgang läuft...
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _gethostbyname@4
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _closesocket@4
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _connect@12
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _htons@4
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _socket@12
    Debug/portscannerung.exe : fatal error LNK1120: 5 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    portscannerung.exe - 6 Fehler, 0 Warnung(en)

    😕
    was soll man machen. Die zweite Fehlerliste erschien übrigens auch, wenn man
    "#include <iostream>" statt "#include <iostream.h>" benutzte ...

    mfg, the flyingCoder.

    UPDATE
    ======

    Ich habe mal alle "cout"s und "cin"s in "printf"s und "scanf"s umgewandelt ... Das Haubtproblem liegt also nicht in der Problematik "using namespace...".
    (Alle C++ler müssen also doch "#include <iostream>" setzen 🕶 . HumeSikkins hat recht)

    --------------------Konfiguration: portscannerung - Win32 Debug--------------------
    Kompilierung läuft...
    main.cpp
    Linker-Vorgang läuft...
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _gethostbyname@4
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _closesocket@4
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _connect@12
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _htons@4
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _socket@12
    Debug/portscannerung.exe : fatal error LNK1120: 5 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    portscannerung.exe - 6 Fehler, 0 Warnung(en)

    Denke mal, dass da das Problem liegt... Leider habe ich davon keine Ahnung und kann leider nicht sagen, wie es zu lösen ist. Langsam fange ich an mich für dieses Proggi zu interessieren. Kennt jemand anderes vieleicht eine Lösung?

    mfg, the flyingCoder.



  • Kann es sein, dass eine zusätzliche Header-Datei benötigt wird? (ganzdummefrage) 😕 😕 😕



  • hi,
    linke mal die "ws2_32.lib" dazu, dann sollte es klappen!

    Tschau Gartenzwerg



  • Hab ich gemacht. Dann ließ es sich zumindest compilieren. Dafür brach er das Programm immer gleich ab, nachdem ich eine IP eingegeben habe. 😞

    mfg, the flyingCoder.

    PS: Warscheinlich muss man die IP als char einlesen. Auch wenn man als IP beispielsweise "123" angibt, mag er das nicht 😞


Anmelden zum Antworten