2010-08-05 10 views
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

지금까지 시도한 내용과 Google에 몇 가지 코드를 알려주십시오. 또한 같은 질문을 반복하는 것은 나쁜 것으로 간주됩니다. –

+0

어플 리케이션에 인터넷 권한이 있어야 할 수도 있습니다. 확인해 봐. – FeelGood

답변

0

accept() 호출을 둘러싼 루프가 누락되어 여러 연결을 허용 할 수 있습니다. 이런 식으로 뭔가 :

ServerSocket server = new ServerSocket(port); 

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

그리고 한번에 하나씩이 아닌 비동기 적으로 작업을 수행 할 수 있도록 별도의 스레드로 받아들입니다. –

+1

한숨 ... 스레드 일 필요는 없습니다. 필요한 것을 지불하십시오. –

0

설명하기 위해 내 의견에 무엇을 의미하는지 : 당신은 여전히 ​​작동하는 그것을 가지고 havn't는 경우

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(); 
} 
1

, 난 당신이 스레드를 확장하는 내부 클래스를 만드는 것이 제안 그 전체를 대체하기 위해 new Thread() { ... }.start() 성명서 (필자는 인스턴스 필드를 선언하려고 할 때 항상 문제가 발생했다. 나는 그 종류의 문장에서 메소드를 생성/재정의 (override)한다). 내부 클래스, 예를 들어, ClientAnsweringThread, 소켓 (client) 걸리는 생성자가 있고 run() 메서드는 ProcessClientRequest(_client); 이미 호출 할 수 있습니다.

관련 문제