Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中打开端口?_Android_Sockets_Connection_Port - Fatal编程技术网

如何在Android中打开端口?

如何在Android中打开端口?,android,sockets,connection,port,Android,Sockets,Connection,Port,如何在android中打开特定端口 我有一个服务器套接字,但由于端口关闭,连接被拒绝 try { ServerSocket server = new ServerSocket(2021); Socket client = server.accept(); } catch (Exception e) { // TODO Auto-generated catch block a = false; e.printStackTrace(); } 看起来您只是缺少了一

如何在android中打开特定端口

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

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

看起来您只是缺少了一个围绕
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();
}

如果您仍然没有让它工作,我建议您创建一个内部类来扩展Thread,以替换整个
新Thread(){
..
}.start()
语句(当我试图声明一个实例字段时,我总是很难让它们完全正常工作,我只是坚持在那种语句中创建/重写方法)。我会让内部类,比如
ClientAnsweringThread
,有一个接受套接字的构造函数(
client
)作为参数,然后在
run()中调用
ProcessClientRequest(_client)
方法。告诉我们到目前为止您尝试了什么,并向我们展示一些代码。此外,重复同样的问题在这里被认为是不好的。可能应用程序必须具有INTERNET权限。检查它。并将其接受到单独的线程中,以便它可以异步执行其工作,而不是一次一个。唉……不必这样做线程。只支付你需要的。