3

わかりました。クライアントコンピューターとサーバーコンピューター間の通信は、2台のコンピューター間にソケットを作成することで、ウィンドウで開始できることを理解していますが、これまでに見たすべてのチュートリアルは、コンピューターのIPアドレスを知っているエンドユーザーに依存しています。彼らが接続したいこと。

ただし、ローカルネットワークLANゲームでは、クライアントはどういうわけかサーバーを自動検出します。これはどのように行われますか?クライアントはすべての可能なIPを自動チェックしますか、ある種の「GetDetectedIPs」APIなどがありますか?

ストレートCの標準WIN32APIで実装できる回答を探しています。MFC、.NET、またはC++は使用しないでください。ありがとうございました。

4

3 に答える 3

3

必要なテクニックはブロードキャストと呼ばれます。たとえば、BOOTP および DHCP プロトコルで使用されます。

宛先アドレスがブロードキャストされたパケットを送信すると、LAN 内のすべてのデバイスで受信されます。ブロードキャスト アドレスは、ホスト識別フィールドが 1 で埋められた IP アドレスです。

bcast_addr = ~netmask | my_addr;

通常、検出プロセスは次のようになります。

  1. クライアントは、特定のポートでブロードキャスト宛先アドレスを持つ UDP データグラムを送信します。
  2. サーバーはこのポートでリッスンし、データグラムを受信します。他のコンピュータはそれを破棄します。
  3. サーバーは、通常の UDP データグラムによって、それ自体に関するすべての必要な情報をクライアントに送信します。
于 2012-05-21T13:15:42.963 に答える
1

これは通常、zero-confで行われます。Microsoft バージョンはSimple Service Discovery Protocolです。

于 2012-05-21T13:09:37.177 に答える
0

クライアントに、指定された範囲内のすべての IP に UDP パケットを送信させ、サーバーに別の UDP パケットで応答させることができます。

于 2012-05-21T13:05:57.250 に答える