0

私は Java でスプレッドシート アプリケーションを持っていますが、それが提供する (私が開発した) 機能の 1 つはシート共有です。基本的に、アプリにはサーバー コードとクライアント コードの両方があるため、誰でもクライアントまたはサーバーになることができます。サーバーであるユーザーが共有を作成し、IP を指定すると、共有が作成されてアクティブになり (最良のシナリオ)、サーバーはその IP と選択したポートでクライアントをリッスンします。

現時点では、クライアントは、接続するためにリッスンしているサーバーの IP とポートを入力する必要があります。次に、サーバーはそのクライアント用に新しいソケットを作成し、別のスレッドで通信しますが、サーバーは別のスレッドでリッスンを続けます (従来の TCP 動作)。これはすべて正常に機能しています。

私が開発する必要があるのは自動検出です。たとえば、クライアントは IP やポートを入力する必要がなく、メニューから [共有に参加] を選択するだけで、サーバーの検索を開始します。見つかったら、その IP でアクティブな共有のリストを送信する必要があります。次に、ユーザーはリストから参加する共有を選択し、接続されます。

しかし、私はこの問題にどう対処するかについて疑問を持っています。DHCP のように、ブロードキャストを使用してサーバーをポーリングする必要がありますか? それとももっと簡単な方法がありますか?

私が実装したいのは次のとおりです。

クライアント -> ローカルネットワークをポーリング -> サーバーを見つける -> サーバーがアクティブな共有リストをクライアントに送信 -> クライアントが参加する共有を選択 -> 接続!

4

1 に答える 1

0

技術的には、探しているのは、スプレッドシート アプリケーションを実行しているアクティブなサーバーです。

1 つの可能性は、サーバー コードが「生きている」メッセージをネットワークに頻繁に (たとえば 15 秒ごとに) 送信することです。クライアント コードはこれらの「生きている」メッセージをリッスンし、意味のあるスプレッドシート サーバーのリストを生成します。

もう 1 つの可能性は、スプレッドシートの保存に使用しているのと同じデータベース エンジンを使用して、接続されたサーバー コードの IP とポートを保存することです。クライアント コードは、接続を取得するためにデータベース テーブルを読み取るだけです。

于 2012-06-12T15:46:58.870 に答える