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

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

2 голосов
/ 05 августа 2010

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

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

try {
   ServerSocket server = new ServerSocket(2021);
   Socket client = server.accept(); 
} catch (Exception e) {
   // TODO Auto-generated catch block
   a = false;
   e.printStackTrace(); 
} 

Ответы [ 3 ]

1 голос
/ 19 января 2011

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

0 голосов
/ 05 августа 2010

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

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();
}
0 голосов
/ 05 августа 2010

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

ServerSocket server = new ServerSocket( port );

while ( true )
{
    Socket client = server.accept();
    ProcessClientRequest( client );
}
...