Linux C++11: Problem MultiSocket-Server mit select()



  • Sehr geehrte Community,

    Momentan, stecke ich bei der Portierung meines Projektes in einer Situation fest, welche ich nicht lösen kann.
    Ich habe einen Server, welcher mehrere Endpoints hat. Jeder Endpoint hat einen eigenen Socket (Descriptor).

    In der Server::Listening() Funktion werden alle Endpoints iteriert und abgehört. Das Wählen findet mit select() statt.
    Unter Windows funktioniert er wie er soll, jedoch unter Linux nur via 127.0.0.1. via dhcping bekomme ich das dhcp-Request
    an den Service unter Linux, gebe ich jedoch explizit "-s <PXE-Server-IP>" bekomme ich "no answer". VirtualBox findet den PXE Service auch nicht. Wireshark sagt ebenso nichts. Ich konnte also das Problem auf jenen Bereich eingrenzen:

    Namiono-Server/Server.cpp at master · FBLipke/Namiono-Server

    Ausgabe des Programms wenn ich es via Loopback anspreche...

    *Namiono - PXE Service Version 0.5
    [I] Waiting for requests...!

    [New Thread 0x7ffff6e85700 (LWP 13831)]
    [W] Class ID is missing!
    DHCP-Proxy(0): Got PXE Request...
    [Thread 0x7ffff6e85700 (LWP 13831) exited]
    *

    Unter Windows kann ich als FD bei "Select()" 0 angeben, bei linux jedoch nicht...



  • Es wäre sinnvoll, wenn du hier ein Minimal-Beispiel posten würdest, welches den Fehler reproduziert. Niemand schaut sich 400 Zeilen Quellcode an. Da PXE ja irgendwas namhaftes zu sein scheint, könntest du auch deren Support kontaktieren, falls es einen gibt. Darüber hinaus ist mir nicht ganz klar, was hier der Fehler ist.



  • Hab mir nicht viel angeguckt, aber Zeile 45 in Server::Update() sieht böse aus. Du solltest keine Elemente während des Iterierens entfernen, zumindest nicht so.



  • @It0101 PXE ist ein Standard: https://en.wikipedia.org/wiki/Preboot_Execution_Environment
    Wird also vermutlich schwierig mit Support kontaktieren.


Anmelden zum Antworten