2017-07-27 115 views
-1

我正在开发一个Android应用程序,它将通过Socket将相机流发送到Node.js Web服务器。当应用程序必须创建套接字时,应用程序不会执行try语句内的代码,但即使启动任何catch异常。未创建Android套接字

MyThread.java

protected Void doInBackground(Void... unused) { 

    OutputStream os = null; 

    try {Log.d("MyCameraApp", "HERE1"); 
     mSocket = new Socket(ip, port); 

     if (mSocket != null) {Log.d("MyCameraApp", "SOCKET CONNECTED"); 

      try { 
       os = mSocket.getOutputStream(); 

       while (true) { 
        DataOutputStream dos = new DataOutputStream(os); 
        dos.writeInt(4); 
        dos.writeUTF("#@@#"); 
        dos.writeInt(mFrameBuffer.size()); 
        dos.writeUTF("[email protected]@-"); 
        dos.flush(); 
        dos.write(mFrameBuffer.toByteArray()); 
        dos.flush(); 
        Thread.sleep(1000/15); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 

       try { 
        if (os != null) 
         os.close(); 
       } catch (Exception e2) { 
        e.printStackTrace(); 
       } 

      } 
     } 
     else { 
      Log.d("MyCameraApp", "SOCKET NULL"); 
     } 

    } 
    catch(UnknownHostException e) { 
     Log.d("MyCameraApp", "CATCH SOCKET"); 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

CameraActivity.java

try { 
    mThread = new MyThread(getApplicationContext(), SERVERIP, SERVERPORT); 
    mThread.execute();Log.d("MyCameraApp", "WELL DONE"); 
} 
catch(Exception e) { 
    e.printStackTrace(); 
    Log.d("MyCameraApp", "CATCH"); 
} 

的CameraActivity创建mThread对象和应用程序只显示尝试里面的日志 'HERE1',创建套接字之前和然后显示日志'WELL DONE'。

我有一个基本的Node.js服务器,只在通讯端口监听,没有别的。

出了什么问题?

在此先感谢!

+0

你给你的应用程序相应的权限?

+0

是的,该应用程序有权访问互联网 –

+0

可以请你分享变量IP和端口的值?你确定他们提供? –

回答

0

Android设备通过wifi连接,电脑通过以太网连接...不同子网。