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 - Fatal编程技术网

android-连接时套接字超时

android-连接时套接字超时,android,sockets,Android,Sockets,我正在尝试在Android上实现一个tcp客户端应用程序。当我尝试连接到我的C++服务器时,套接字在连接到服务器时超时了。 我的代码: new Thread(new ClientThread()).start(); try { PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true); out.println("Tes

我正在尝试在Android上实现一个tcp客户端应用程序。当我尝试连接到我的C++服务器时,套接字在连接到服务器时超时了。 我的代码:

new Thread(new ClientThread()).start();
try
{
  PrintWriter out = new PrintWriter(new BufferedWriter(
    new OutputStreamWriter(socket.getOutputStream())), true);
  out.println("Test message.");
}
catch (Exception e)
{
  // ERROR1
  e.printStackTrace();
}

...

class ClientThread implements Runnable
{
  @Override
  public void run()
  {
    try
    {
      InetAddress serverAddr = InetAddress.getByName("192.168.1.116");
      socket = new Socket(serverAddr, 9000);
    }
    catch (Exception e)
    {
      // ERROR2
      e.printStackTrace();
    }
  }
}
首先出现ERROR1(套接字为null),然后出现ERROR2(连接超时)。服务器工作正常,我已经用不同的客户端对其进行了测试。我有“使用权限”,所以这应该不是问题

编辑: 堆栈错误2:

05-17 02:26:50.789: W/System.err(26625): java.net.ConnectException: failed to connect to /192.168.1.116 (port 9000): connect failed: ETIMEDOUT (Connection timed out)
05-17 02:26:50.789: W/System.err(26625):    at libcore.io.IoBridge.connect(IoBridge.java:114)
05-17 02:26:50.789: W/System.err(26625):    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
05-17 02:26:50.789: W/System.err(26625):    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
05-17 02:26:50.789: W/System.err(26625):    at java.net.Socket.startupSocket(Socket.java:566)
05-17 02:26:50.789: W/System.err(26625):    at java.net.Socket.<init>(Socket.java:225)
05-17 02:26:50.789: W/System.err(26625):    at cz.gclient.gardenclient.MainActivity$ClientThread.run(MainActivity.java:153)
05-17 02:26:50.789: W/System.err(26625):    at java.lang.Thread.run(Thread.java:841)
05-17 02:26:50.789: W/System.err(26625): Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
05-17 02:26:50.789: W/System.err(26625):    at libcore.io.Posix.connect(Native Method)
05-17 02:26:50.789: W/System.err(26625):    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
05-17 02:26:50.789: W/System.err(26625):    at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
05-17 02:26:50.789: W/System.err(26625):    at libcore.io.IoBridge.connect(IoBridge.java:112)
05-17 02:26:50.789: W/System.err(26625):    ... 6 more
05-17 02:26:50.789:W/System.err(26625):java.net.ConnectException:无法连接到/192.168.1.116(端口9000):连接失败:ETIMEDOUT(连接超时)
05-17 02:26:50.789:W/System.err(26625):位于libcore.io.IoBridge.connect(IoBridge.java:114)
05-17 02:26:50.789:W/System.err(26625):位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
05-17 02:26:50.789:W/System.err(26625):位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
05-17 02:26:50.789:W/System.err(26625):位于java.net.Socket.startupSocket(Socket.java:566)
05-17 02:26:50.789:W/System.err(26625):位于java.net.Socket(Socket.java:225)
05-17 02:26:50.789:W/System.err(26625):位于cz.gclient.gardenclient.MainActivity$ClientThread.run(MainActivity.java:153)
05-17 02:26:50.789:W/System.err(26625):位于java.lang.Thread.run(Thread.java:841)
05-17 02:26:50.789:W/System.err(26625):由以下原因引起:libcore.io.ErrnoException:connect failed:ETIMEDOUT(连接超时)
05-17 02:26:50.789:W/System.err(26625):位于libcore.io.Posix.connect(本机方法)
05-17 02:26:50.789:W/System.err(26625):位于libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
05-17 02:26:50.789:W/System.err(26625):位于libcore.io.IoBridge.connectErrno(IoBridge.java:127)
05-17 02:26:50.789:W/System.err(26625):位于libcore.io.IoBridge.connect(IoBridge.java:112)
05-17 02:26:50.789:W/系统错误(26625):。。。还有6个

“连接超时”是一个网络连接问题。例如,可能有一个防火墙。这不是一个编程问题,你不能用代码来解决它。

好吧,假设你修复了NPE,这是由于以错误的顺序进行操作造成的,然后在你的问题中发布异常和堆栈跟踪,这样就可以看到你在说什么。顺序是正确的,套接字必须在它自己的线程中。。。我会将堆叠打印添加到原始postNo,顺序不对。在创建PrintWriter所依赖的套接字之前,您正在创建PrintWriter。你为什么认为你得到了NPE?我用我的平板电脑连接到了另一个网络。。。我真傻:D谢谢:)