この情報はChatGPTの力も使ってまとめたものです。本来はMSDNからすべてのマニュアルやエビデンスを見つけ、読み込んだ上でまとめたかったが、特にWinsockについては情報が古くい公式のマニュアルも見つけられずにて、自分に文章力もなかったため、これまでまとめきれていませんでした。AIの力はすごい。ChatGPT(AI)の出力結果は現時点でまだ不完全かもしれないが、それでもすごい。ここでまとめた内容については、これまでwinsockにかかわってきた自分としては、感覚的だが間違いないと思います。VBA界隈だと、winsockとwinsock2が混在していて個人的にも混乱していたので勉強になりました。自分のサンプルプログラムも見直さないと。
wsock32.dll と ws2_32.dll の違い
wsock32.dllとws2_32.dllは、Winsock APIを実装するWindowsのダイナミックリンクライブラリ(DLL)です。しかし、両者にはいくつかの重要な違いがあります。
wsock32.dllは、最初のWinsock APIの実装であり、Windows 95およびWindows NT 4.0で使用されました。ws2_32.dllは、Windows 98、Windows 2000、およびWindows XPで導入され、IPv6などの新しい機能をサポートしています。
以下は、wsock32.dllとws2_32.dllの主な違いです。
IPv6サポート
wsock32.dllは、IPv4のみをサポートしています。一方、ws2_32.dllはIPv4とIPv6の両方をサポートしています。IPv6は、IPアドレスが枯渇する問題に対処するために設計された、より高度なIPプロトコルです。
拡張セキュリティ
ws2_32.dllは、拡張セキュリティをサポートしています。この機能は、Windows Vistaで導入されました。拡張セキュリティを使用すると、Winsock APIを使用するアプリケーションが、Windowsのファイアウォールやその他のセキュリティ機能との統合が容易になります。
関数の変更
一部のWinsock関数は、ws2_32.dllで異なる形式になっています。たとえば、sendto関数のバッファー引数は、ws2_32.dllでconstキーワードが追加されました。
関数の増加
ws2_32.dllには、wsock32.dllには存在しない新しい関数が多数あります。これらの関数には、getaddrinfo、getnameinfo、WSASend、WSARecvなどが含まれます。これらの関数は、より高度なネットワークプログラミング機能を提供します。
したがって、IPv6を使用したり、拡張セキュリティを必要とする場合は、ws2_32.dllを使用する必要があります。ただし、Winsock APIを使用するアプリケーションがWindows 95またはWindows NT 4.0をサポートする場合は、wsock32.dllを使用する必要があります。
ws2_32.dllに定義された関数
ws2_32.dllには、Winsock2 APIの関数が多数定義されています。以下に一部の主な関数をリストアップします。
- accept
- bind
- closesocket
- connect
- getaddrinfo
- gethostbyaddr
- gethostbyname
- getnameinfo
- getpeername
- getprotobyname
- getprotobynumber
- getservbyname
- getservbyport
- getsockname
- getsockopt
- htonl
- htons
- inet_addr
- inet_ntoa
- ioctlsocket
- listen
- ntohl
- ntohs
- recv
- recvfrom
- select
- send
- sendto
- setsockopt
- shutdown
- socket
- WSAAsyncGetHostByAddr
- WSAAsyncGetHostByName
- WSAAsyncSelect
- WSACleanup
- WSAConnect
- WSAEventSelect
- WSAGetLastError
- WSARecv
- WSARecvFrom
- WSASend
- WSASendTo
- WSAStartup
これらの関数は、Winsock2 APIを使用してTCP/IP通信を実行するために必要な機能を提供しています。それぞれの関数の詳細な使い方やパラメーターに関する情報は、公式のWinsock2 APIドキュメントを参照することをお勧めします。
ws2_32.dll(Winsock2 API)のドキュメント
公式のWinsock2 APIドキュメントは、Microsoft Developer Network(MSDN)にホストされています。以下のリンクからアクセスできます。
このページには、Winsock2 APIの概要、使用方法、関数、構造体、列挙体、マクロ、およびその他のリソースが含まれています。また、各関数のシグニチャやパラメーターの説明、戻り値に関する情報なども提供されています。
wsock32.dllに定義された関数
wsock32.dllは、古いバージョンのWinsock APIを含むDLLで、Windows 95およびWindows NT 4.0以前で使用されていました。以下は、wsock32.dllに含まれる一部の主要な関数のリストです。
- accept
- bind
- closesocket
- connect
- gethostbyaddr
- gethostbyname
- gethostname
- getpeername
- getprotobyname
- getprotobynumber
- getservbyname
- getservbyport
- getsockname
- getsockopt
- htonl
- htons
- inet_addr
- inet_ntoa
- ioctlsocket
- listen
- ntohl
- ntohs
- recv
- recvfrom
- select
- send
- sendto
- setsockopt
- shutdown
- socket
これらの関数は、TCP/IP通信に必要な機能を提供するために使用されます。ただし、wsock32.dllは非推奨であり、古いバージョンのWindowsでしかサポートされていないため、現代的なアプリケーションでは使用されません。代わりに、新しいバージョンのWinsock2 APIを使用することをお勧めします。
wsock32.dll(Winsock API)のドキュメント
公式のwsock32.dllに関するAPIドキュメントは、Microsoft Developer Network (MSDN)にホストされていましたが、現在はWindows 95およびWindows NT 4.0がサポートされていないため、公式には提供されていません。ただし、インターネット上には、古いWinsock APIおよびwsock32.dllに関する情報が入手可能なウェブサイトやフォーラムが存在することがあります。
ただし、wsock32.dllが非推奨であり、現代的なアプリケーションでは使用されなくなっているため、新しいバージョンのWinsock2 APIを使用することをお勧めします。Winsock2 APIに関する情報は、Microsoftの公式ドキュメントで入手できます。また、上記の回答でも紹介したMSDNのページにアクセスすることで、Winsock2 APIのドキュメントを参照することができます。
コメント