[sockets] connect() verbindet nicht?



  • guten tag @ all,

    Ich sitze nun schon die ganze nacht an dem code für einen portscanner(linux) und komme an einer Stelle nicht weiter:

    struct sockaddr_in addr;
    
    	addr.sin_port = atoi(_port);
    	addr.sin_family = AF_INET;
            inet_pton(AF_INET, _IP1 , &addr.sin_addr);
    
    	int connecting_status = connect(socket_id, &addr, sizeof(addr) );
    

    ...connect gibt -1 zurück ( connectet nicht ).
    Ich bekomme beim compiliern auch folgende warnung:

    Warnung: Übergabe des Arguments 2 von »connect« von inkompatiblem Zeigertyp
    

    Ich habe davor noch nie etwas mit sockets gemacht und wäre für jede hilfe dankbar !

    MFG Darrell



  • Was sind denn "_port" und "_IP1" für Variablentypen?
    Die Compiler-Warnung kannst Du ignorieren. connect() erwartet einen Zeiger auf "struct sockaddr", Du übergibst aber einen Zeiger auf "struct sockaddr_in", was im Grunde identisch ist.
    Wenn's Dich stört, kannst Du dem 2. Parameter von connect() ein "(struct sockaddr *)" voranstellen.



  • HI,
    thx erstma! Die compilerwarnung ist weg

    _port und _IP1 sind bei des Cstrings, deswegen auch die funktionen "atoi" und "inet_pton" um diese in die richtige binäre form zu bringen.

    ...Oder mach ich hier was falsch ?
    Den connect gibt immer noch -1 zurück 😕



  • perror sagt dir genaueres über den fehler.



  • so,
    ich weiß jetzt woran es lag das connect immer -1 zurück gegeben hat :

    add.sin_addr = htons(atoi(_port))
    

    ...so gehts jetzt!

    THX nochmal für eure beiträge

    Gruss darrell


Anmelden zum Antworten