Как я могу открыть определенный порт в android?
У меня есть серверный сокет, но соединение отклоняется, потому что порт закрыт.
try {
ServerSocket server = new ServerSocket(2021);
Socket client = server.accept();
} catch (Exception e) {
// TODO Auto-generated catch block
a = false;
e.printStackTrace();
}
Если вы все еще не можете его использовать, я бы предложил создать внутренний класс, который расширяет поток, чтобы заменить весь этот оператор new Thread() {
... }.start()
(у меня всегда были проблемы с тем, чтобы они работали точно, когда я пытаюсь объявить поле экземпляра, я просто придерживаюсь методов создания/переопределения в этом типе инструкции). Я бы сделал внутренний класс, скажем ClientAnsweringThread
, иметь конструктор, который принимает в Socket (client
) в качестве параметра, а затем вызывает ProcessClientRequest(_client);
в методе run()
, как вы уже это сделали.
Похоже, вам просто не хватает цикла вокруг вызова accept()
, чтобы вы могли принимать несколько соединений. Что-то вроде этого:
ServerSocket server = new ServerSocket( port );
while ( true )
{
Socket client = server.accept();
ProcessClientRequest( client );
}
Чтобы проиллюстрировать, что я имел в виду в своем комментарии:
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();
}