bind() -> "Bad file descriptor"



  • Hallo,

    also ich Programmiere derzeit einen Server welcher auf HTTP Anfragen lauscht
    und wenn da eine eingeht in einem pthread (Linux) einen Socks5-Server startet.

    Dieser Socks5 Server bekommt dann zufällig einen Port zwischen 10000 und 60000
    zugewiesen und versucht dann in einer Schleife solange einen Port zu binden bis
    es klappt, ausgehend vom zufällig zugewiesenen (den nutzt er dann dafür connections anzunehmen).

    Das funktioniert auch alles ganz gut aber früher oder später versagt dieser
    bind() Aufruf dann und perror() gibt "Bad file descriptor" zurück, konnte in
    Google leider nichts dazu finden 😕

    Genug Ports müssen eigentlich frei sein, es werden immer nur so 2-5 Socks5
    Server gleichzeitig benutzt.

    An was kann das liegen?

    Außerdem hab ich close() (für die Sockets) mal mit

    int closesocket(int fh)
    {
    	int ret = close(fh);
    	if(ret == -1)
    		perror("Closesocket ");
    
    	return ret;
    }
    

    ausgetauscht.
    Und sobald ich die Meldung bekomme das bind() mit "Bad file descriptor" ended endet auch close() damit?!

    Wäre nett wenn mir jemand helfen könnte!

    mfg



  • "Edit": Um genau zu sein passiert failen von bind() scheinbar immer dann wenn man erst ein paar Socks5 Server erstellt, die auch nutzt und dann wieder auf dem HTTP Port einen neuen Socks5 starten will?!


Anmelden zum Antworten