2016-05-31 5 views
0

私はサーバーと多数のクライアントを持っています。私のクライアントはサーバー経由でメッセージを送信します。クライアントがサーバーに接続すると、私のサーバーはこのクライアントのソケット参照をSock配列に配置します。別のクライアントがこの最初のクライアントサーバーにメッセージを送信すると、最初のクライアントがブール値配列を使用してサーバーに接続されているかどうかをチェックし、オンラインの場合は配列のソケット参照を使用して最初のクライアントにメッセージを送信します。 すべてのクライアントはサーバにログアウトする前にクローズシグナルを送信し、ブーリアン配列を更新できるようにします。しかし、最初のクライアントのインターネット接続が突然消えた場合でも、配列のブーリアン変数は真です。この目的のために、boolean配列をチェックするサーバにスレッドを作りたいと思います。配列のインデックスが真であれば、それに対応するソケットが開いているかどうかをチェックしたいと思います。 socket.isConnected()またはsocket.isClosed()などのソケットのどのメソッドを使用する必要がありますか?インターネット接続が突然切れると、ソケットにはどうなりますか?

+0

「最初のクライアントのインターネット接続が突然消えたら」 - それはどういう意味ですか?問題は、「インターネット」はあなたが接続できるエンティティとして実際には存在しないため、接続を検出できないかどうかです。 –

答えて

3

接続が機能していることを確認する唯一の方法は、一定の間隔でハートビートまたはメッセージを受信することです。
isConnectd()があります。私はこれまでに接続したことがありますか?isClosed()を意味します。私はclose()を私の側に呼びましたが、これはあなたが望むかもしれないものです。

+0

インターネット接続が切断された場合、どのようにソケット参照を使用してまだ接続されているかどうかを確認できますか?このソケットはどうなりますか? – abc

+0

@abc私が言ったように、唯一の方法はメッセージ/データがあなたに送られることを期待することであり、もしそれが送られなければ、あなたはソケット接続をタイムアウトさせる。 –

+0

今私は定期的にサーバーにメッセージを送信する私のサービスからスレッドを作っています。しかし、サービスが停止すると、このスレッド自体は停止しません。これを処理する方法は、サービスが停止している場合、サーバーソケットのタイムアウトが発生する可能性があります。 – abc

関連する問題