私は Java でスプレッドシート アプリケーションを持っていますが、それが提供する (私が開発した) 機能の 1 つはシート共有です。基本的に、アプリにはサーバー コードとクライアント コードの両方があるため、誰でもクライアントまたはサーバーになることができます。サーバーであるユーザーが共有を作成し、IP を指定すると、共有が作成されてアクティブになり (最良のシナリオ)、サーバーはその IP と選択したポートでクライアントをリッスンします。
現時点では、クライアントは、接続するためにリッスンしているサーバーの IP とポートを入力する必要があります。次に、サーバーはそのクライアント用に新しいソケットを作成し、別のスレッドで通信しますが、サーバーは別のスレッドでリッスンを続けます (従来の TCP 動作)。これはすべて正常に機能しています。
私が開発する必要があるのは自動検出です。たとえば、クライアントは IP やポートを入力する必要がなく、メニューから [共有に参加] を選択するだけで、サーバーの検索を開始します。見つかったら、その IP でアクティブな共有のリストを送信する必要があります。次に、ユーザーはリストから参加する共有を選択し、接続されます。
しかし、私はこの問題にどう対処するかについて疑問を持っています。DHCP のように、ブロードキャストを使用してサーバーをポーリングする必要がありますか? それとももっと簡単な方法がありますか?
私が実装したいのは次のとおりです。
クライアント -> ローカルネットワークをポーリング -> サーバーを見つける -> サーバーがアクティブな共有リストをクライアントに送信 -> クライアントが参加する共有を選択 -> 接続!