次の方法で共有


インクルード ファイル

Windows Sockets 1.1 で使用する元のインクルード ファイルは、winsock.h ヘッダー ファイル でした。 Marketplace UNIX ソケットに基づく既存のソース コードを Windows ソケットに移植しやすくするために、Winsock 1.1 用の Windows ソケット開発キットには、標準の UNIX インクルード ファイル (たとえば、sys/socket.h および arpa/inet.h ヘッダー ファイル) と同じ名前のインクルード ファイルがいくつか用意されています。 ただし、これらの同様の名前の Winsock ヘッダー ファイルには、Winsock2.h ヘッダー ファイルを含めるディレクティブが含まれていました。

Windows Sockets 2 がリリースされたとき、Windows ソケットで使用するプライマリ インクルード ファイルの名前が winsock2.h に変更されました。 Winsock 1.1 の以前の元の Winsock.h ヘッダー ファイルも、古いアプリケーションとの互換性のために保持されていました。 Windows 2000 のリリース以降、Winsock 1.1 互換アプリケーションの開発は非推奨となりました。 すべてのアプリケーションで、Winsock アプリケーション ソース ファイル Winsock2.h ディレクティブを使用する必要があります。

Winsock2.h ヘッダー ファイルには、Winsock 関数、構造体、および定義の大部分が含まれています。 Ws2tcpip.h ヘッダー ファイルには、TCP/IP 用の WinSock 2 Protocol-Specific Annex ドキュメントで導入された定義が含まれています。これには、IP アドレスの取得に使用される新しい関数と構造体が含まれています。 これには、getaddrinfogetnameinfo IPv4 アドレスと IPv6 アドレスの両方の名前解決を提供する関数ファミリが含まれます。 ws2tcpip.h ヘッダー ファイル は、これらの IP に依存しない名前付け関数がアプリケーションで必要な場合にのみ必要です。

Mswsock.h ヘッダー ファイルには、Windows ソケット 2 (TransmitFileAcceptExConnectExなど) に対する Microsoft 固有の拡張機能の定義が含まれています。 mswsock.h ヘッダー ファイル は、これらの Microsoft 固有の拡張機能がアプリケーションで使用されない限り、通常は必要ありません。

Winsock2.h ヘッダー ファイルには、Windows.h ヘッダー ファイルのコア要素が内部的に含まれているため、Winsock アプリケーションでは通常、Windows.h ヘッダー ファイルの #include 行はありません。 Windows.h ヘッダー ファイルに #include 行が必要な場合は、その前に #define WIN32_LEAN_AND_MEAN マクロを付ける必要があります。 歴史的な理由から、Windows.h ヘッダーの既定では、Windows Sockets 1.1 の Winsock.h ヘッダー ファイルが含まれます。 Winsock.h ヘッダー ファイル内の宣言は、Windows ソケット 2 で必要な Winsock2.h ヘッダー ファイル内の宣言と競合します。 WIN32_LEAN_AND_MEAN マクロを使用すると、Winsock.hWindows.h ヘッダーに含まれません。 これを示す例を次に示します。

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#pragma comment(lib, "Ws2_32.lib")

int main() {
  return 0;
}

基本的な Winsock アプリケーション の作成の

Winsock の概要

ソケット アプリケーションを Winsock に移植する

Winsock プログラミングに関する考慮事項