2009-03-23 5 views
1

Quelle est la meilleure façon d'utiliser les sockets sur la plate-forme Windows?Mise en réseau avec C/C++ dans un environnement Windows

Socles de base Je suppose, TCP/IP. Peut-être pour un client de discussion, ou juste pour apprendre.

Quelqu'un pourrait-il me donner un exemple d'utilisation de WININET?

Répondre

2

peut-être FtpGetFile() qui est une question très large et dépend beaucoup de vos besoins.

De quel niveau avez-vous besoin? HTTP/FTP? Ou "juste des prises" pour votre propre protocole? Quel type de performance avez-vous besoin (nombre de connexions, vitesse attendue)?

Si vous optez pour une API brute, vous devriez généralement rester à l'écart de WSAAsyncSelect, car les performances sont bien au-dessus de «quelques» connexions simultanées. Le blocage des sockets et du thread par socket n'est pas trop chaud non plus. WSAEventSelect est un peu délicat, mais fait le travail bien (μtorrent gère un lot de connexions simultanées de cette façon). Fancypants vraiment-haute-charge seraient des ports d'achèvement d'E/S. Vous pouvez également regarder dans boost ASIO pour une certaine portabilité.

Si vous souhaitez utiliser des protocoles standard tels que HTTP/FTP, vérifiez libcurl. Ou, pour des besoins moindres et un surcoût moindre, les fonctions Windows WININET standard (a beaucoup de restrictions cependant).


Pour utiliser les fonctions WinINet, essayez de démarrer here - peut-être pas un échantillon, mais au moins vous donne des trucs assez à Google pour;)

0

Pour une application client-serveur de base avec TCP/winsock UDP devrait être suffisant.

0

Voulez-vous dire le modèle d'E/S asynchrone sur Windows? Il y a sélectionner, WSAAsyncSelect, WSAEventSelect, E/S superposées, port de complétion d'E/S, vous pouvez également utiliser Libevent et Boost Asio qui sont tous les deux multiplateformes.

0

WinInet exemples que vous pourriez trouver dans msdn ou codeproject.con

façons d'utiliser que vous pourriez trouver dans platofrm belle independed lib - boost :: asio

0

Si vous cherchez à utiliser comme une expérience d'apprentissage Je voudrais également regarder ACE. Une structure de plate-forme croisée C++ qui implémente beaucoup de modèles décrits dans Patterns for Concurrent Network and Networked Objects. L'auteur a également écrit sur ACE (voir here).

Questions connexes