Как открыть порт в Android?

1

Как я могу открыть определенный порт в android?

У меня есть серверный сокет, но соединение отклоняется, потому что порт закрыт.

try {
   ServerSocket server = new ServerSocket(2021);
   Socket client = server.accept(); 
} catch (Exception e) {
   // TODO Auto-generated catch block
   a = false;
   e.printStackTrace(); 
} 
  • 0
    расскажите нам, что вы пробовали до сих пор и покажите нам код. Также - повторение одного и того же вопроса здесь считается плохим.
  • 0
    Возможно приложение должно иметь разрешение ИНТЕРНЕТ. Проверь это.
Теги:
connection
sockets
port

3 ответа

1

Если вы все еще не можете его использовать, я бы предложил создать внутренний класс, который расширяет поток, чтобы заменить весь этот оператор new Thread() {... }.start() (у меня всегда были проблемы с тем, чтобы они работали точно, когда я пытаюсь объявить поле экземпляра, я просто придерживаюсь методов создания/переопределения в этом типе инструкции). Я бы сделал внутренний класс, скажем ClientAnsweringThread, иметь конструктор, который принимает в Socket (client) в качестве параметра, а затем вызывает ProcessClientRequest(_client); в методе run(), как вы уже это сделали.

0

Похоже, вам просто не хватает цикла вокруг вызова accept(), чтобы вы могли принимать несколько соединений. Что-то вроде этого:

ServerSocket server = new ServerSocket( port );

while ( true )
{
    Socket client = server.accept();
    ProcessClientRequest( client );
}
  • 0
    И принять его в отдельный поток, чтобы он мог выполнять свою работу асинхронно, а не по одному.
  • 1
    Вздох ... это не должно быть темы. Платите только за то, что вам нужно.
0

Чтобы проиллюстрировать, что я имел в виду в своем комментарии:

ServerSocket server = new ServerSocket( port );
while ( true )
{
    Socket client = server.accept();
    new Thread () { 
        final Socket _client = client;
        // This stuff runs in a separate thread all by itself
        public void run () {
            ProcessClientRequest(_client);
        }
    }.start();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню