SocketException

メッセージの受信スレッドを停止させる際、SocketExceptionが出るのでどうしたものかと。以下にコードを載せます。

import java.io.*;
import java.net.*;
public class Sample implements Runnable{
	private static String host;
	private Socket s;
	private BufferedInputStream bis;
	public static void main(String[] args) {
		host = args[0];
		Thread t = new Thread(new Sample());
		t.start();
	}
	public void run() {
		int a;
		try{
			s = new Socket(host, 9876);
			bis = new BufferedInputStream(
				s.getInputStream());
			while((a=bis.read())!=-1){
				/*
				 * doSomething();
				 */
			}
		}catch(SocketException e){
			
		}catch(IOException e){
			
		}
	}
	private void stop(){
		try {
			s.close();
			bis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

run()メソッド内でIOExceptionの前にSocketExceptionを付けることで解決。当たり前のことなんだろうけど、俺は知らなかったのでここにメモ
IOExceptionの後にSocketExeceptionをcatchさせると必要無い旨の警告が出たので、IOExceptionでSocketExceptionを処理できるものだと考えていました。

テトリネットクライアント by JAVA

上のネタがどこから出てきたのかというと、かなり前からの話になりますが、テトリネットのクライアントをJavaで書くことに挑戦しています。今やっていることや細々としたメモを暇殺シwikiに載せてあるので、そちらの興味がある方はご覧くださいませ。