2010-08-05 86 views
1

如何在android中打开特定的端口?如何在Android中打开端口?

我有一个服务器套接字,但连接因端口关闭而被拒绝。

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

告诉我们你到目前为止所做的尝试,并向我们展示一些代码。此外 - 重复相同的问题在这里被认为是不好的。 – 2010-08-05 14:31:40

+0

也许应用程序必须有INTERNET许可。核实。 – FeelGood 2011-11-12 05:50:04

回答

0

看起来你只是缺少围绕accept()调用一个循环,这样你能接受多个连接。事情是这样的:

ServerSocket server = new ServerSocket(port); 

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

并将它接受到一个单独的线程中,以便它可以异步执行其工作,而不是一次一个。 – 2010-08-05 16:33:29

+1

叹息......它不一定是线程。只需支付你所需要的。 – 2010-08-05 16:35:48

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

如果你还没有带得到它的工作,我建议你创建可扩展条条一个内部类以取代整个new Thread() { ... }.start()声明(当我尝试声明一个实例字段时,我始终难以使这些工作正确,我只是坚持在这种声明中创建/覆盖方法)。我会让内部类如ClientAnsweringThread拥有一个构造函数,它将Socket(client)作为参数,然后像run()那样调用ProcessClientRequest(_client);方法。