Javaでポートからデータを取得する方法

Java の java.net.Socket クラスを使えばポートデータを取得できます。以下は指定したホストとポートからデータを取得する方法を示した簡単なサンプルコードです。

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class PortDataExample {
    public static void main(String[] args) {
        String host = "example.com"; // 目标主机
        int port = 80; // 目标端口

        try {
            // 创建socket对象并连接到指定主机和端口
            Socket socket = new Socket(host, port);

            // 获取socket的输入流和输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 发送请求数据
            String request = "GET / HTTP/1.1\r\nHost: " + host + "\r\n\r\n";
            outputStream.write(request.getBytes());
            outputStream.flush();

            // 读取响应数据
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                String response = new String(buffer, 0, bytesRead);
                System.out.println(response);
            }

            // 关闭socket和流
            socket.close();
            inputStream.close();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上記の例ではまず、対象ホストとポートを指定したSocketオブジェクトを作成します。そしてSocketオブジェクトのgetInputStream()とgetOutputStream()メソッドを使って入力ストリームと出力ストリームを取得します。出力ストリームからリクエストデータを送信し、入力ストリームからレスポンスデータを読み取ります。最後に、ソケットとストリームをクローズしてリソースを解放します。

実際の利用においては、必要に応じてエラー処理、レスポンスデータの検証やパースなどを適宜行う必要があることに注意してください。

bannerAds