ホームページ  >  記事  >  Java  >  Javaはソケットサーバーが切断されているかどうかを判断します

Javaはソケットサーバーが切断されているかどうかを判断します

王林
王林オリジナル
2020-01-16 09:18:003335ブラウズ

Javaはソケットサーバーが切断されているかどうかを判断します

ソケット クラスで sendUrgentData メソッドを使用できます。このメソッドは、相手の Socket の SO_OOBINLINE 属性がオンになっていない限り、1 バイトのデータを出力ストリームに送信します。オンの場合、このバイトは自動的に破棄され、SO_OOBINLINE 属性はデフォルトでオフになります。

したがって、次のコード部分はリモート エンドが切断されたかどうかを判断できます:

try{
    socket.sendUrgentData(0xFF);
}catch(Exception ex){
    reconnect();
}

(無料の学習ビデオ チュートリアルの共有: java ビデオ チュートリアル)

ping を使用して実装します:

package com.csdn.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
	static BufferedReader bufferedReader;
	public static void main(String[] args) throws IOException {
		try {
			Process process = Runtime.getRuntime().exec("ping 192.168.1.104");//判断是否连接的IP;
			bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
			String connectionStr = "";
			while ((connectionStr = bufferedReader.readLine()) != null) {
				System.out.println(connectionStr);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			bufferedReader.close();
		}
	}
}

注: この方法には重大な欠点があります。つまり、相手がネットワークに接続しているかどうかだけを判断でき、クライアントがネットワークに接続されているかどうかは判断できません。の上。

実際、socket.getoutstream ストリームとソケット.getinputstream ストリームを介してクライアントに情報を送受信する場合、ソケットが接続されていない場合は例外がスローされます。これが、Java でネットワーク プログラミングを記述する必要がある理由です。 try 内にあるので、catch にクライアントの終了処理を記述するだけです。

おすすめの関連記事とチュートリアル: Java 入門チュートリアル

以上がJavaはソケットサーバーが切断されているかどうかを判断しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。