Brauche Hilfe bei Portierung von Server



  • Hi,
    ich habe einen Server unter Windows geschrieben, da mein PC nicht immer laufen kann brauche ich diesen nun für Linux ich hab nun schon eine Menge #ifdef Teile plaziert allerdings habe ich noch ein paar Fehler:

    if(fdSetRead.fd_array[i] == s) //'struct fd_set' has no member named 'fd_array'
    
    for(int i = 0; i < fdSetRead.fd_count; ++i) //'struct fd_set' has no member named 'fd_count'
    
    tCon.s = accept(s, (sockaddr*)&tCon.addr, &addrsize); //invalid conversion from `int*' to `socklen_t*'
    

    Wäre nett, wenn mir jemand sagen könnte wie das unter Linux auszusehen hat :xmas1:

    Danke

    Gruß



  • Ich denke mal fdSetRead und so sind diese Socket-Container, mit denen man select() füttern kann!? 😕

    Die Implementierung von dem Ding ist unter jedem OS anders. Die einen nutzen Listen, die anderen Arrays, whatever.

    Daher gibt's extra so vorgefertigte Makros für den Zugriff. FDSET_READ_ADD() oder so ähnlich, findest Du bestimmt bei google, nur diese solltest Du zum Zugriff nutzen! 💡



  • Danke,
    bin mit der Sache gerade etwas überfordert 😞
    Könntest du mir ein konkretes Beispiel dazu machen?

    Danke

    Gruß

    fd_set      fdSetRead;
    select(0, &fdSetRead, 0, 0, 0); // Select
    


  • man: select(2)

    siehe FD_SET, FD_ISSET etc.



  • poll


Anmelden zum Antworten