Linux auf Windows : Socket frage



  • hallo zusammen,

    ich sollte eine Software auf windows von Linux portieren... klappt alles soweit..

    allerdings bin ich auf die Socket-Geschichte von Linux und Windows gestoßen.

    für linux gibt es ja bekanntlich :

    #include "sys/types.h"
    #include "sys/socket.h"
    #include "netinet/in.h"
    

    für win32 gibt es dann bloß die <winsock.h>

    wenn ich aber im source Code diese includes durch die winsock Include-Datei tausche und noch die WSAStart starten lasse, läuft denn alles ohne probleme? oder ist es eher eine längere Geschichte?? 😕 (vieles umschreiben bzw. umgehen)

    Danke 🙄



  • ich kanns dir jetzt nicht 100%ig sagen aber soweit ich weiss unterscheiden sich die funktionen nicht wirklich. allerdings musst du bei socket-funktionen dann immer eine abfrage machen ob für windows oder unix compiliert wird. allerdings hab ich das noch nicht gemacht - nur gesehen.

    die winsock-api solltest du dir trotzdem anschaun.

    blan



  • Ein Unterschied ist neben der WSAStart-Geschichte noch der Fehlerwert. Z.B. bei Linux heißt ein Rückgabewert 0 von socket, dass es nicht geklappt hat.
    Bei Windows war es glaub ich -1. (Oder umgekehrt.)

    Das stand aber in der MSDN im Kapitel WinSocks aufgelistet, wo die Unterschiede sind.
    http://msdn2.microsoft.com/en-us/library/ms740096(VS.85).aspx



  • GNU-Fan schrieb:

    Z.B. bei Linux heißt ein Rückgabewert 0 von socket, dass es nicht geklappt hat.

    Nein, 0 ist ein gültiger Deskriptor und kann, wenn man vorher stdin schließt, auch von socket zurückgegeben werden.

    Die BSD- und POSIX-APIs liefern fast alle -1 bei Fehlern, so auch diese.

    EDIT:
    Achso, ich überlas das "oder umgekehrt". Ja, es ist genau umgekehrt 😉



  • Danke Jungs,
    ich werde mir mal alles über die Sockets noch ein bisschen genauer reinlesen und versuch dann mein Glück...

    Danke Euch..

    ich hole euch zur Hilfe sobald ich dann wieder im niemandsland stecke 😃


Anmelden zum Antworten