Не удается открыть сокет сервера Java на Android

Я пытаюсь запрограммировать простую программу чата на Android. Для тестирования я хочу, чтобы сервер и клиент работали на одном устройстве. В настоящее время я застрял на самом первом этапе настройки серверной части, и я просто не знаю, что делаю не так. (Сервер будет поздно запускаться в собственном потоке)

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    int port = 4444;

    try {
        ServerSocket serverSocket = new ServerSocket(port);
        Log.i("Info", "Server socket initiated on port" + port);

    } catch (IOException e) {
        Log.e("Error", "Could not listen on port " + port);
    }
  }
}

Я пробовал много разных портов, но все равно получаю ошибку ввода-вывода. Я также попытался просто использовать новый ServerSocket (0) для выделения свободного порта, используя следующий код:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ServerSocket serverSocket = null;

    try {
        serverSocket = new ServerSocket(0);
        Log.i("Info", "Server socket initiated on port" + serverSocket.getLocalPort());

    } catch (IOException e) {
        Log.e("Error", "Could not listen on port " + serverSocket.getLocalPort());
    }
  }
}

Но это просто возвращает номер порта -1, что означает, что серверный сокет по-прежнему ни к чему не привязан.

Возможно, вам потребуется указать, что вашему приложению требуется доступ к сети.

npinti 06.08.2018 12:18

Я добавил в манифест разрешение <uses-permission android: name = "android.permission.INTERNET" /> и все равно получаю -1

Stephan Pillhofer 06.08.2018 12:24
get the IO Error какой? где трассировка стека?
Vladyslav Matviienko 06.08.2018 12:26

хорошо, извините, я не знаю почему, но добавление разрешения теперь устранило проблему. Вдруг работает. Thx npinit!

Stephan Pillhofer 06.08.2018 12:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Ответ заключался в том, чтобы добавить разрешение в манифест. Спасибо!

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