WinSock.hとWinSock2.hの違いを知っている人はいますか。同じライブラリ(.lib)を使用していないことは知っていますが、WinSock2が新しい機能を追加するだけなのか、それともWinSock1の機能も改善するのかはわかりません。IP / TCPソケットを使用していて、select()でタイムアウトを管理したいと考えています。また、複数のスレッドを使用して、同時に複数のクライアントを管理しています。WinSock 1.1を引き続き使用する必要がありますか、それともWinSock 2に移行する必要がありますか?前もって感謝します。
2 に答える
おそらくを使用する必要がありますwinsock2.h
。
いくつかのポイント:
winsock.h
と一緒に使用する必要があり、wsock32.lib
と一緒に使用するwinsock2.h
必要がありますws2_32.lib
winsock.h
またwinsock2.h
、同じプロジェクトに一緒に入れたり、winsock2.h
置き換えwinsock.h
たり、拡張したりしないでください。winsock.h
Windows 95 / WindowsNT3.5などの古いバージョンのWindowsをターゲットにしている場合にのみ使用してください。
Microsoftの実装
Winsockのバージョン1.1(winsock.h
)は、Windows for Workgroups(コードネームSnowball)用のアドオンパッケージ(Wolverineと呼ばれる)で提供されていました。これは、バージョン3.5以降のWindows95およびWindowsNTの不可欠なコンポーネントでした(Windows NTの最初の市販バージョンであるバージョン3.1には、AT&T UNIX SystemV"Streamsに基づくTCP/IPの独自の非常に不完全な実装のみが含まれていました。 「API。
Winsockのバージョン2.1(winsock2.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など、さまざまな便利な目的で利用できます。
Winsock.hは、16ビットバージョンのWindowsで動作を開始したコードのコンパイルを維持するためにあります。新しいプロジェクトでは、常にWinsock2.hを使用し、ws2_32.libにリンクする必要があります。