Java unknownhostException с двумя компьютерами

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



public class ChatClient{

    private final String serverName;
    private final int serverPort;
    private Socket socket;
    private InputStream serverIn;
    private OutputStream serverOut;

    public ChatClient(String serverName, int serverPort) {
        this.serverName = serverName;
        this.serverPort = serverPort;
    }

    public static void main(String[] args){
        ChatClient client = new ChatClient("raspberrypi", 6342);
        if (!client.connect()){
            System.err.println("Connect failed");
        }else{
            System.out.println("Connected");
        }
    }

    private boolean connect(){
        try{
            this.socket = new Socket("raspberrypi", 6342);
            this.serverOut = socket.getOutputStream();
            this.serverIn = socket.getInputStream();
            return true;
        }catch (IOException e){
            e.printStackTrace();
        }
        return false;

    }
}

У меня есть запущенный сервер, ожидающий подключения клиента. Однако, поскольку я использую клиент на своем компьютере и сервер на моем raspberry pi, я продолжаю получать исключение неизвестного хоста. Я попытался ввести имя хоста raspberry pi, но, похоже, это не сработало. P.S. Возможно, я ошибаюсь в имени хоста.

Что происходит из командной строки при проверке связи с raspberrypi? Подозреваю, что имя хоста нигде не прописано, например в файле хостов Windows.

Steve11235 09.10.2018 20:44

Вы получаете UnknownHostException, что означает, что «IP-адрес [хоста] не может быть определен», так что да, ваш IP-адрес неверен.

jthort 09.10.2018 20:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не работает, потому что значение, которое вы указываете для первого аргумента (raspberrypi), не является допустимым именем хоста.

Вам нужно передать туда IP-адрес вашей малины в вашей сети. Если вы используете домашний маршрутизатор, вы даже можете установить статический IP-адрес для своей raspberry (это обычное дело, потому что без этого каждый раз, когда вы перезагружаете raspberry, вы можете получать другой адрес от DHCP-сервера).

После того, как вы узнаете адрес своей малины, просто замените "raspberrypi" на адрес (в форме «192.168.0.10» в зависимости от вашей конфигурации).

Вот как установить статический IP: https://www.raspberrypi.org/learning/networking-lessons/rpi-static-ip-address/

Edit the file /etc/dhcpcd.conf as follows:

Type sudo nano /etc/dhcpcd.conf at the command prompt.

Scroll to the bottom of the script, and add the following lines:

 interface eth0

 static ip_address=192.168.0.2/24 static routers=192.168.0.1 static
 domain_name_servers=192.168.0.1

 interface wlan0

 static ip_address=192.168.0.2/24 static routers=192.168.0.1 static
 domain_name_servers=192.168.0.1
  1. Save the file with ctrl + o and then exit nano with ctrl + x. Your Raspberry Pi will now boot up with the IP address 192.168.0.2 every time; we didn't use 192.168.0.1 as this is reserved for the router. You can of course use any address you like, but in the configuration above the range must be between 192.168.0.2 and 192.168.0.255.

Другие вопросы по теме