12

WinSock.hとWinSock2.hの違いを知っている人はいますか。同じライブラリ(.lib)を使用していないことは知っていますが、WinSock2が新しい機能を追加するだけなのか、それともWinSock1の機能も改善するのかはわかりません。IP / TCPソケットを使用していて、select()でタイムアウトを管理したいと考えています。また、複数のスレッドを使用して、同時に複数のクライアントを管理しています。WinSock 1.1を引き続き使用する必要がありますか、それともWinSock 2に移行する必要がありますか?前もって感謝します。

4

2 に答える 2

17

おそらくを使用する必要がありますwinsock2.h

いくつかのポイント:

  • winsock.hと一緒に使用する必要があり、wsock32.libと一緒に使用するwinsock2.h必要がありますws2_32.lib
  • winsock.hまたwinsock2.h、同じプロジェクトに一緒に入れたり、winsock2.h置き換えwinsock.hたり、拡張したりしないでください。
  • winsock.hWindows 95 / WindowsNT3.5などの古いバージョンのWindowsをターゲットにしている場合にのみ使用してください。

Microsoftの実装

Winsockのバージョン1.1winsock.h)は、Windows for Workgroups(コードネームSnowball)用のアドオンパッケージ(Wolverineと呼ばれる)で提供されていました。これは、バージョン3.5以降のWindows95およびWindowsNTの不可欠なコンポーネントでした(Windows NTの最初の市販バージョンであるバージョン3.1には、AT&T UNIX SystemV"Streamsに基づくTCP/IPの独自の非常に不完全な実装のみが含まれていました。 「API。

Winsockのバージョン2.1winsock2.h)は、Windows 95のアドオンパッケージで提供されました。これは、Windows 98、Windows NT 4.0、およびそれ以降のすべてのWindowsリリースの不可欠なコンポーネントでした。Winsock 2.xの最近のバージョンは、新しいWindowsリリースとともに、またはサービスパックの一部として提供されています。

Winsock2は機能を追加しますか?

Winsock 2は、Layered Service Provider(LSP)と呼ばれるメカニズムによって拡張可能です。Winsock LSPは、インターネットのペアレンタルコントロール、Webコンテンツフィルタリング、QoSなど、さまざまな便利な目的で利用できます。

于 2012-12-30T20:50:19.793 に答える
8

Winsock.hは、16ビットバージョンのWindowsで動作を開始したコードのコンパイルを維持するためにあります。新しいプロジェクトでは、常にWinsock2.hを使用し、ws2_32.libにリンクする必要があります。

于 2012-12-30T20:46:40.070 に答える