山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

スッキリわかるJava入門 実践編 第11章 ネットワーク通信

第11章 ネットワーク通信

Javaによるネットワーク通信について学びます。ネット上にあるデータを読み込んだりします。

URLを用いた高水準アクセス

java.net.URLクラスのような高水準APIを用いてWebページを取得します。

HTMLを取得する
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class Main {
    public static void main(String[] args) {
        // HTMLを取得する
        try {
            URL url = new URL("http://dokojava.jp");
            InputStream is = url.openStream();
            InputStreamReader isr = new InputStreamReader(is);
            int i = isr.read();
            while(i != -1) {
                System.out.print((char) i);
                i = isr.read();
            }
            isr.close();
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

Socketを用いた低水準アクセス

サーバ名とポート番号を指定して、Socketインスタンスを生成し、HTMLを取得します。

HTMLを取得
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Main {
    public static void main(String[] args) {
        try {
            Socket sock = new Socket("dokojava.jp", 80);
            InputStream is = sock.getInputStream();
            OutputStream os = sock.getOutputStream();
            os.write("GET /index.html HTTP/1.0\r\n".getBytes());
            os.write("\r\n".getBytes());
            os.flush();
            InputStreamReader isr = new InputStreamReader(is);
            int i = isr.read();
            while(i != -1) {
                System.out.print((char) i);
                i = isr.read();
            }
            sock.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)