sys/socket.h etc. für Windows



  • Ich versuche gerade, so ein Serverprogramm für meinen NES-Emulator in Windows zu kompilieren. Aber dort gibt es diese Netzwerkbibliotheken oder was das sein soll nicht. Die fehlenden Dateien sind:

    sys/socket.h
    sys/ioctl.h
    netinet/in.h
    netinet/tcp.h
    arpa/inet.h
    netdb.h

    Soweit ich das mitbekommen habe, scheint das ganze unter Unix standardmäßig dabei zu sein.
    Meine Frage: Gibt es diese Bibliotheken auch für Windows? Ich hab gelesen, daß man für Windows winsock.h benutzen kann, aber es handelt sich hierbei ja um bereits bestehenden Code, der nur noch kompiliert werden soll, also wäre es wohl nicht so toll, da erst noch großartig drin rumzufummeln. Da in der Readme des Programms die Kompilierung unter Windows erwähnt wird, geh ich mal davon aus, daß es generell möglich sein sollte.

    Gibt es also irgendwo eine Implementierung dieser Bibliotheken für Windows?



  • cygwin



  • unter windoofs gibts winsock.h und winsock2.h und die import-lib ws2_32.lib.
    für standard netzwerk-zeug ausreichend. hart wird's nur, wenn du z.b. 'raw sockets' oder sowas brauchst. dazu musste auf zusatz-libraries ausweichen wie z.b. 'winpcap'
    🙂



  • swort schrieb:

    cygwin

    Was hat das mit Cygwin zu tun? Cygwin ist doch, soweit ich weiß, nur eine Unix-ähnliche Umgebung. Wenn der GCC für Windows aber trotzdem die entsprechenden Bibliotheken nicht dabei hat, nützt mir das doch immer noch nichts.

    ~fricky schrieb:

    unter windoofs gibts winsock.h und winsock2.h und die import-lib ws2_32.lib.
    für standard netzwerk-zeug ausreichend. hart wird's nur, wenn du z.b. 'raw sockets' oder sowas brauchst. dazu musste auf zusatz-libraries ausweichen wie z.b. 'winpcap'
    🙂

    Wie schon gesagt: Ich will nicht selbst irgendwas Netzwerktechnisches programmieren, sondern ein Programm kompilieren, das mir nur als Quellcode vorliegt. Da nützt mir dann logischerweise keine Alternativbibliothek, es sei denn, diese hat exakt die gleichen Funktionen und ich brauch nur die include-Befehle anzupassen.



  • 🙄



  • NES-Spieler schrieb:

    Wie schon gesagt: Ich will nicht selbst irgendwas Netzwerktechnisches programmieren, sondern ein Programm kompilieren, das mir nur als Quellcode vorliegt. Da nützt mir dann logischerweise keine Alternativbibliothek, es sei denn, diese hat exakt die gleichen Funktionen und ich brauch nur die include-Befehle anzupassen.

    sorry, ich hab' deinen beitrag nicht gründlich gelesen. wenn's für das programm keinen windows-port gibt, dann war der tip mit cygwin übrigens gar nicht so verkehrt. sonst musst du's selber umbauen mit einigen #ifdef WIN32's. das ist übrigens gar nicht so'n hoher aufwand. die unterschiede zwischen win-socket-apis und BSD-sockets sind nicht so gross.
    🙂



  • ~fricky schrieb:

    sorry, ich hab' deinen beitrag nicht gründlich gelesen. wenn's für das programm keinen windows-port gibt, dann war der tip mit cygwin übrigens gar nicht so verkehrt.

    Aber in wie weit hilft mir da Cygwin? Beinhaltet dieses Programm denn irgendwelche Header- und Lib-Dateien? Denn wenn's nur ums Kompilieren von den Unix-Makefiles geht: Das ist an sich kein Problem. MSYS tut's da auch.

    ~fricky schrieb:

    sonst musst du's selber umbauen mit einigen #ifdef WIN32's. das ist übrigens gar nicht so'n hoher aufwand. die unterschiede zwischen win-socket-apis und BSD-sockets sind nicht so gross.
    🙂

    Hmm. Aber dann müßte ich mich auch erstmal reinarbeiten und gucken, was welche Entsprechung hat. Und ob das dann alles so sauber wäre, ist ja auch nicht sicher. Gibt es denn keine MinGW-Umsetzung dieser Bibliotheken?



  • inkludier doch einfach mal winsock2.h und windows.h und guck was passiert.
    vllt. hast du glück.



  • Einfach Subsystem For Unix Applications installieren und die Tools dazu (brauchst allerdings auch ein gutes Windows für :D), da sind die ganzen Header auch mit dabei.



  • NES-Spieler schrieb:

    Hmm. Aber dann müßte ich mich auch erstmal reinarbeiten und gucken, was welche Entsprechung hat. Und ob das dann alles so sauber wäre, ist ja auch nicht sicher. Gibt es denn keine MinGW-Umsetzung dieser Bibliotheken?

    Hast Du es denn mal probiert? Die meisten Socket-Funktionen unter Windows sind von BSD-Sockets und damit 100% identisch zu denen von UNIX. Evtl. müssen einige Typen geändert werden (SOCKET statt int für den Descriptor) und ganz am Anfang muss m.W. einmal WSAStartup() oder so aufgerufen werden. Ansonsten müssen wirklich nur die Header getauscht werden. Solange Du nicht mit RAW-Sockets arbeitest.

    Bei den wirklich unklaren Abweichungen kannst Du dann ja immernoch hier fragen. Einige (ich z.B.) werden Erfahrung mit der Portierung von Socket-Applikationen zwischen UNIX und Windows haben.

    Also, erst probieren, dann schimpfen 🙂

    EDIT:
    Ansonsten, Cygwin ist mehr oder weniger ein Port der GNU libc auf Windows. Anders als bei MSYS/MinGW hast Du hier also einen vollständigen POSIX- und BSD-Bibliothekswrapper, während MSYS/MinGW nur eine ISO-LibC bereitstellt.


Anmelden zum Antworten