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未建立连接

解决方案 »

  1.   

    非java开发人员问提个可能:你是不是只创建socket但是没有监听?
      

  2.   

     out.println(message);
    你的这句应该改成out.writeObject(message);吧我觉得
      

  3.   

    关注中。感觉程序没有设定在usb接口监听,所以默认在网络口监听,客户端发送连接请求也是通过socket,而不是使用usb,所以建立不起连接。
      

  4.   

    socket = new Socket(serverAddr, 5556);
    这句有问题,socket监听的本地即时你pc机中的端口,5556端口是android机中的端口。
      

  5.   

    最新Demo下载地址 猛击这里http://download.csdn.net/download/lixiaodaoaaa/5854171