Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1665 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Les Sockets Windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Les Sockets Windows

n°623738
Zevka
Posté le 28-01-2004 à 13:29:16  profilanswer
 

Voilà j'ai cherché un peu partout, mais j'ai pas trouvé ce que je cherché.
 
J'ai travaillé les Sockets en C sous linux en cours.
Il se trouve que c'est plutot bien foutu, et du coup je voudrais faire des tests chez moi avec Windows ...
 
Seulement, j'ai pas réussi à trouver les équivalent sous Windows, je suis bien tombé sur des docs vagues sur la classe CSocket mais ça n'as pas vraiment de rapport avec les socket sous linux (ca utilise des classe de flux de données etc... pourquoi faire simple quand on peut faire compliquer quoi lol).
 
Je voulais donc savoir comment on peut programmer des sockets sous windows de la meme manière que sous unix ?
Quelle librairie etc...
 
P.S: J'viens de faire un autre post, mais comme les sujets n'ont pas vraiment de rapport j'ai préféré les poster séparement ;)

mood
Publicité
Posté le 28-01-2004 à 13:29:16  profilanswer
 

n°623742
Kristoph
Posté le 28-01-2004 à 13:30:52  profilanswer
 

Utilises Winsocks mais pas la dernière version : pas Winsocks 2.0 je crois. Après, la seule difference avec les sockets Unix je crois est que tu dois appeler une fonction d'initialisation.
 
Pour la doc : MSDN

n°623745
Zevka
Posté le 28-01-2004 à 13:33:23  profilanswer
 

Bah justement dans la MSDN je n'avait trouvé que CSocket ... mais bon je vais mater plus en détails Winsocks ...  
Souhaite moi bonne chance :p
merci

n°623752
chrisbk
-
Posté le 28-01-2004 à 13:42:24  profilanswer
 

WSAStartup pour l'init, je crois

n°623851
blackgodde​ss
vive le troll !
Posté le 28-01-2004 à 14:52:05  profilanswer
 

utilise les windows socket 1.1
 
#include <winsock.h>
 
initialisation : WSADATA wsaData; WSAStartup (MAKEWORD(1,1), &wsaData);
 
cleanup : WSACleanup();
 
sinon sous linux les sockets sont des int, sous windows les sockets sont des SOCKET
 
sous linux tu peux utiliser write et read, sous windows tu dois rester à send et recv
 
sinon, le reste de l'api est a peu pret semblable.
 
http://msdn.microsoft.com/library/ [...] ctions.asp
 
(CSocket c'est la classe qui encapsule l'api socket dans les MFC)


Message édité par blackgoddess le 28-01-2004 à 14:53:17

---------------
-( BlackGoddess )-
n°624836
Zevka
Posté le 29-01-2004 à 13:19:22  profilanswer
 

Bah sous unix un socket t'ouvre un descripteur de fichier ...
Sous windows j'aurait pensé que ça aurait utilisé un FILE* mais apparement non..
 
Enfin bon merci pour la doc et les infos :)

n°626096
xterminhat​e
Si vis pacem, para bellum.
Posté le 30-01-2004 à 13:35:58  profilanswer
 

Sous Windows, le type du descripteur est SOCKET (enfin ce que je sais de Winsock2) et sous linux c'est int.

n°626145
SoWhatIn22
Posté le 30-01-2004 à 14:05:14  profilanswer
 

oui et non. En pratique, une fois la socket ouverte, on peut la mapper sur un flux et utiliser les fonctions "classiques" de lecture et écriture (comme avec un FILE*). Evidemment, on utilise pour cela des fonctions bien spécifiques...
Par contre, j'aimerais savoir pour quelle raison vous conseillez d'utiliser Winsock 1.1 et pas 2.0


Message édité par SoWhatIn22 le 30-01-2004 à 14:05:47
n°626206
Kristoph
Posté le 30-01-2004 à 14:47:25  profilanswer
 

SoWhatIn22 a écrit :

oui et non. En pratique, une fois la socket ouverte, on peut la mapper sur un flux et utiliser les fonctions "classiques" de lecture et écriture (comme avec un FILE*). Evidemment, on utilise pour cela des fonctions bien spécifiques...
Par contre, j'aimerais savoir pour quelle raison vous conseillez d'utiliser Winsock 1.1 et pas 2.0


 
Parceque l'API Winsock 1.1 ressemble beaucoup aux sockets Unix et que l'API Winsock 2.0 non.

n°626223
SoWhatIn22
Posté le 30-01-2004 à 15:02:05  profilanswer
 

j'ai peur de dire une bêtise, mais c'est à dire?
je veux dire par là que il me semble bien utiliser winsock2

Code :
  1. #include <winsock2.h>
  2. #pragma  comment(lib,"ws2_32.lib" )


et pourtant j'utilise les fonctions socket, send, sendto, recv, recvfrom, setsockopt, et les macros classiques FD_ZERO, FD_ISSET, etc... et le tout sans aucun problème.
On parle des mêmes fonctions ou pas?

mood
Publicité
Posté le 30-01-2004 à 15:02:05  profilanswer
 

n°626242
xterminhat​e
Si vis pacem, para bellum.
Posté le 30-01-2004 à 15:30:38  profilanswer
 

Pareil, je comprends pas le pb initial. Winsock 2 supporte la quasi totalité des fonctions socket standards.
 
En outre, je viens de coder un programme qui utilise toutes les fonctions socket standard sous Win32 avec la libriarie winsock2.2.... la seule petite différence se situe au niveau de l'appel de WSAStartup/Cleanup en début et fin de programme bien spécifique à Win32. Sinon le code est portable sous Win32 et Linux.
 
PS: une autre petite diff : close est remplcé par closesocket sous Win32.
 
Bon courage,
   Xter.

n°626248
Kristoph
Posté le 30-01-2004 à 15:39:50  profilanswer
 

Oui et la lib en supporte beaucoup qui ne sont pas portables. Et si vous n'utilisez pas les fonctions ajoutées, vous vous retrouvez à utiliser une API compatible Winsock 1.2 :)

n°626262
gilou
Modérateur
Modzilla
Posté le 30-01-2004 à 16:01:59  profilanswer
 

Tu peux aller jeter voir comment c'est fait dans la partie windows specifique de libcurl ( http://curl.haxx.se/libcurl/ )
 
J'en profite pour faire de la pub a cette lib que je trouve tres utile:

Citation :

libcurl - a multiprotocol file transfer library
libcurl is a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more!  
libcurl is highly portable, it builds and works identically on numerous platforms, including Solaris, Net/Free/Open BSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS and more...  
 
libcurl is thread-safe, IPv6 compatible and fast.  
 
This whole section of the curl web site is dedicated to libcurl, and it contains detailed information on how to use libcurl in your own applications using your prefered programming language. Checkout the Ada95, Basic, C, C++, Cocoa, Dylan, Euphoria, Ferite, Java, Lua, Object-Pascal, O'Caml, Pascal, Perl, PHP, PostgreSQL, Python, Rexx, Ruby, Scheme and Tcl bindings.


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°626344
printf
Baston !
Posté le 30-01-2004 à 17:44:47  profilanswer
 

gilou a écrit :

Tu peux aller jeter voir comment c'est fait dans la partie windows specifique de libcurl ( http://curl.haxx.se/libcurl/ )
 
J'en profite pour faire de la pub a cette lib que je trouve tres utile:

Citation :


...


 
A+,


 
:love:
Merci gilou, je cherchais une telle bibliothèque qui soit vraiment libre !


---------------
Un matin je me lèverai et il fera beau.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Les Sockets Windows

 

Sujets relatifs
[delphi 6]Status imprimante via API windows...Arrêter/démarrer un service windows ?
Générateur de code API windows[Scripting Windows] Enregistrer une saisie clavier Sous W2K ??!!!
[windows 2000 server] gerer les DNS avec une appli ASPProbleme de Charset sous Windows et pas sous Unix
.net + Windows NTrécupération de la session de windows sur internet explorer ??
[C/C++ sockets windows] Limite de connexions sur un serveurSockets windows -> impossible de créer une socket!
Plus de sujets relatifs à : Les Sockets Windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR