Y a-t-il une différence entre & lt; winsock.h & gt; et & lt; winsock2.h & gt ;?
Je suis, y compris, comme il est requis par la C MySQL bibliothèque.
L'auto-complétion dans VS2010 est aussi montrer un - une idée de ce que c'est?
Sont-ils interchangeables, et quels sont les avantages de l'un sur l'autre?
Merci!
source d'informationauteur James
Vous devez vous connecter pour publier un commentaire.
@coût de la réponse liens à une discussion qui, entre autres choses, demande à cette question qui n'a jamais été répondu:
windows.h
comprendwinsock2.h
lors de la compilation pour les nouvelles versions de Windows, mais pour les plus âgés développement, il comprendwinsock.h
à la place. Le problème n'est pas limité à seulementwindows.h
cependant. Tout momentwinsock.h
est inclus avantwinsock2.h
il y aura des erreurs de compilation. La raison en est que les deux fichiers NE PAS co-exister très bien.winsock2.h
a été conçu pour remplacerwinsock.h
ne pas l'étendre. Tout ce qui est défini danswinsock.h
est également définie danswinsock2.h
. Siwinsock2.h
est inclus avantwinsock.h
winsock2.h
définit_WINSOCKAPI_
pour empêcher le compilateur de traiter leswinsock.h
comprend, et tout est très bien. Mais siwinsock.h
est inclus avantwinsock2.h
winsock2.h
ne détecte pas, et tente de re-définir tout ce quewinsock.h
a déjà défini, provoquant la compilation échoue.Vous devez être très prudent lors du mélange de code qui utilise
winsock.h
avec le code qui utilisewinsock2.h
dans le même projet. Par exemple, lors de l'écriture de votre propre socket code qui utilisewinsock2.h
et à l'aide de bibliothèques tierces qui utilisent encorewinsock.h
.Vous devez utiliser
winsock2.h
sauf si vous souhaitez utiliser Winsock 1.1.winsock2.h
est pour Winsock 2.Vous pouvez en lire plus à ce sujet à la Wikipédia Winsock page.