Можно ли использовать сокет с каналами NIO? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть пример, где я использую Socket с классическим API потоков Java IO.Я знаю, что похожий SocketChannel выход.Но для пояснения я хочу знать, можно ли вообще использовать Socket с каналами.

Когда я попытался socket.getChannel(), он вернул null.

package com.zetcode;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketHeadRequest {

    public static void main(String[] args) {

        var hostname = "example.com";
        int port = 80;

        try (Socket socket = new Socket(hostname, port)) {

            try (var writer = new PrintWriter(socket.getOutputStream(), true)) {

                writer.println("HEAD / HTTP/1.1");
                writer.println("Host: " + hostname);
                writer.println("User-Agent: Console Http Client");
                writer.println("Accept: text/html");
                writer.println("Accept-Language: en-US");
                writer.println("Connection: close");
                writer.println();

                try (var reader = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
                    String line;

                    while ((line = reader.readLine()) != null) {
                        System.out.println(line);
                    }
                }
            }
        } catch (UnknownHostException ex) {

            System.out.println("Server not found: " + ex.getMessage());

        } catch (IOException ex) {

            System.out.println("I/O error: " + ex.getMessage());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...