DataOutputStream
サーバーへのバイトストリームの送受信に使用しています。最初に、重要なコード部分について説明してから、質問をします。
次のような send メソッドがあります。
protected static void sendMessage (Socket socket, byte[] b) throws IOException
{
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream(), 2048);
DataOutputStream serverOut = new DataOutputStream(bos);
serverOut.write(b, 0, b.length);
serverOut.flush();
}
上記のメソッドを使用して、インスタンスごとにサーバーにメッセージを送信しDataOutputStream
ます。注:Socket
インスタンスは前に初期化され、引数としてこのメソッドに送信されます。
さらにreceive
、次のような方法があります。
protected static void receive (Socket socket, byte[] b) throws IOException
{
BufferedInputStream bis = new BufferedInputStream (socket.getInputStream ());
DataInputStream serverIn = new DataInputStream (bis);
serverIn.readFully(b, 0, b.length);
}
最後のステップで、main
メソッドを表示します:
public static void main(String[] args)
{
ServerSocketFactory socket_factory = ServerSocketFactory.getDefault();
InetAddress host = InetAddress.getByName("192.168.20.33");
ServerSocket server_socket = socket_factory.createServerSocket(1111,3,host);
Socket socket = server_socket.accept();
System.out.println(socket.isConnected());
byte[] request = new byte[]{48,48,48};
send(socket, request);
byte[] response = new byte[10];
receive(socket,response);
}
通常の状況ではすべて問題ありませんが、私の質問は次のとおりです。socket.isConnected()
ステートメントsend
メソッドによるテスト接続後にサーバーがダウンすると、例外はスローされませんが、メソッドを呼び出すreceive
と、接続されていないホストの例外がスローされます。send
サーバーが失敗したときに例外をスローしないがreceive
、接続が失われたときに例外をスローするメソッドはどれですか? また、write
メソッド同様のreadFully
メソッドで接続を確認する方法はありますか? サンプルでは例外がスローされますか?
(間違った用語や文法を使用している場合は申し訳ありません。私は英語を学んでいます。)