主题 : PC机与Android开放板进行USB Socket通信 报错 求解答 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 36730
精华: 0
发帖: 20
金钱: 105 两
威望: 21 点
综合积分: 40 分
注册时间: 2011-01-20
最后登录: 2014-04-04
楼主  发表于: 2011-06-10 20:44

 PC机与Android开放板进行USB Socket通信 报错 求解答

PC机作为Client,Android作为Server,PC与Android通过USB线连接。

PC机Client端实现:
package client;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("adb forward tcp:6100 tcp:5556");
            Thread.sleep(2000);
        } catch (IOException e3) {
            e3.printStackTrace();
        } catch (InterruptedException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
          
        Socket socket = null;
        try {
            InetAddress serverAddr = null;
            serverAddr = InetAddress.getByName("10.0.2.15");
            System.out.println("TCP 1111" + "C: Connecting...");

            socket = new Socket(serverAddr, 5556);
            String message = "AndroidRes,Where is my Pig (Android)?";
            System.out.println("TCP 2222" + "C: Sending: '" + message + "'");
            PrintWriter out = new PrintWriter(new BufferedWriter(
                    new OutputStreamWriter(socket.getOutputStream())), true);
            out.println(message);
        } catch (UnknownHostException e1) {
            System.out.println("TCP 3333" + "ERROR:" + e1.toString());
        } catch (IOException e2) {
            System.out.println("TCP 4444" + "ERROR:" + e2.toString());
        } finally {
            try {
                if (socket != null) {
                    socket.close();
                }
            } catch (IOException e) {
            System.out.println("TCP 5555" + "ERROR:" + e.toString());
            }
        }
    }
}

Android开放板Server端,在工程的AndroidManifest.xml文件中添加了,<uses-permission android:name="android.permission.INTERNET" />用户权限,具体实现如下:
package r.Server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;

public class Serever extends Activity {
    /** Called when the activity is first created. */
    final int SERVER_PORT = 5556;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startServer();
    }
  

    private void startServer() {
        try {
            System.out.println("s: connecting...");
            ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
            while (true) {
                Socket client = serverSocket.accept();
                System.out.println("s: receiving...");
                try {
                    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                    String str = in.readLine();
                    System.out.println("s: received:'" + str);
                } catch (Exception e) {
                    System.out.println("s: error");
                    e.printStackTrace();
                } finally {
                    client.close();
                    System.out.println("s:done");
                }
                Thread.sleep(3000);
            }
        } catch (Exception e) {
            System.out.println("s:error");
            e.printStackTrace();
        }
    }
}

通信报错提示:TCP 4444ERROR:java.net.ConnectException: Connection timed out: connect
Client与Server未建立连接