Titre: [C++] Les sockets, portables? Posté par: Mic32768 le 04 Octobre 2006 à 04:14:15 Salut,
je voulais savoir si il existe une librairie standard en C++ qui permet de manipuler les sockets qui compilera sur Linux et Windows. J'ai vu quelque chose du genre winsock mais c'est pas portable. Quelqu'un a-t-il une solution? Titre: [C++] Les sockets, portables? Posté par: Nebelmann le 04 Octobre 2006 à 07:40:26 http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/socket.2.html
Titre: [C++] Les sockets, portables? Posté par: Mic32768 le 04 Octobre 2006 à 07:51:02 Merci! =D
C'est exactement ce que je cherchais :) Titre: [C++] Les sockets, portables? Posté par: Mic32768 le 04 Octobre 2006 à 07:55:34 Mmm j'ai essayé de compiler juste en incluant types.h et socket.h avec Visual Studio 2005 et il ne trouve pas socket.h :/
Faut-il le télécharger à part ou y faut absolument utiliser winsock? Edit: C'est bon j'ai trouvé, il faut inclure winsock absolument =( Titre: [C++] Les sockets, portables? Posté par: Nebelmann le 04 Octobre 2006 à 22:45:05 euh c'est possible que ça ne marche pas avec les compilos de microsoft... ça doit être du POSIX, donc faut un gcc ou un mingw
Titre: [C++] Les sockets, portables? Posté par: Invit le 05 Octobre 2006 à 06:11:18 Concernant la portabilité de code faut bien se dire que d'un OS à un autre, ça va engendrer du code en plus, c'est pas rigoureusement le même code que l'on compile à la fois pour windows et pour linux.
Pour être concret, sous windows avec l'api winsock2 on utilisera par exemple closesocket() tandis que sous linux les sockets de type Berkeley étant assimilées à des descripteurs de fichier standard, on fermera une socket avec un simple close() comme on ferme un fichier au niveau du système. La solution c'est de mettre une ligne : Code: #define closesocket close Egalement une caractéristique de Winsock c'est qu'il faut l'initialiser avec WSAStartup(), chose dont on se fout éperduement avec les socket BSD. De fait on shinte le bazar en insérant le code spécifique à windows à l'interieur de directives pré-processeur : Code: #ifdef __WIN32__ Sans doute mieux qu'un long discours, un exemple de code d'un client TCP portable Win/Lin ici (http://www.pastecode.com/5950). BufferBob. Titre: [C++] Les sockets, portables? Posté par: Mic32768 le 05 Octobre 2006 à 09:22:09 Haha merci =D, je vais enfin pouvoir m'adonner aux joies de la programmation réseau 8).
Mais quand même, j'aurais bien aimé que Microsoft utilise ce qui est standard, ce serait bien plus simple Titre: [C++] Les sockets, portables? Posté par: lordOric le 05 Octobre 2006 à 12:36:29 Citation de: Mic32768 Mais quand même, j'aurais bien aimé que Microsoft utilise ce qui est standard, ce serait bien plus simple Vaste débat. :rolleyes:Soyons sérieux, commercialement, c'est pas leur intérêt. Ah ! Et il me semble que les windows (depuis 2000?) sont conformes POSIX. Titre: [C++] Les sockets, portables? Posté par: Nebelmann le 05 Octobre 2006 à 20:36:18 Citation Ah ! Et il me semble que les windows (depuis 2000?) sont conformes POSIX. ce que tu dis m'étonnant un peu, et après rapide recherche, il apparaît que windows possède un sous-système POSIX :http://en.wikipedia.org/wiki/Architecture_of_Windows_2000 mais bon... c'est pas encore çà |