Android Socket错误没有消息

时间:2014-11-30 04:53:08

标签: java android sockets

我创建了一个简单的网络测试应用程序。 但它不起作用,总是在Socket()抛出错误。 我尝试使用getMessage()检查错误消息,但没有打印消息。 我该怎么办?

public static void main(String args[]){
    ServerSocket serverSocket = null;
    Socket socket = null;
    try{
        serverSocket = new ServerSocket(14100);
        socket = serverSocket.accept();
        InputStream in = socket.getInputStream();
        OutputStream out = socket.getOutputStream();
        byte[] arr = new byte[100];
        in.read(arr);
        System.out.println(new String(arr));
        String str = "Hello Client";
        out.write(str.getBytes());
    }
    catch(Exception e){
        System.out.println(e.getMessage());
    }
    finally{
        try{
            socket.close();
        }
        catch(Exception ignored){}
        try{
            serverSocket.close();
        }
        catch(Exception ignored){}
    }
}

以下是客户端的Android代码。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    TextView tv = (TextView) findViewById(R.id.id_tv);

    Socket socket = null;
    try{
        socket = new Socket("192.168.0.52",14100);
        InputStream in = socket.getInputStream();
        OutputStream out = socket.getOutputStream();
        String str = "Hello Server";
        out.write(str.getBytes());
        byte arr[] = new byte[100];
        in.read(arr);
        tv.setText(new String(arr));
    }
    catch(UnknownHostException uhe){
    }
    catch(IOException ioe){
    }
    catch(Exception e){
    }
    finally{
        try{
            socket.close();
        }
        catch(Exception ignored){
        }
    }
}

当然,我在AndroidManifest.xml中为android添加了permisson

1 个答案:

答案 0 :(得分:1)

将套接字代码从UI主线程onCreate()移出到AsyncTask或常规线程。

要进行快速测试,请将所有套接字代码包装到如下的线程中:

    new Thread() { 
        public void run() {
            // Move your socket code here for a quick test
        }
    }.start();