当前位置:编程学习 > wap >>

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未建立连接
--------------------编程问答-------------------- up 

关注,学习中! --------------------编程问答-------------------- 围观等答案 --------------------编程问答-------------------- 非java开发人员问提个可能:你是不是只创建socket但是没有监听? --------------------编程问答--------------------  out.println(message);
你的这句应该改成out.writeObject(message);吧我觉得 --------------------编程问答-------------------- 关注中。

感觉程序没有设定在usb接口监听,所以默认在网络口监听,客户端发送连接请求也是通过socket,而不是使用usb,所以建立不起连接。 --------------------编程问答-------------------- socket = new Socket(serverAddr, 5556);
这句有问题,socket监听的本地即时你pc机中的端口,5556端口是android机中的端口。 --------------------编程问答-------------------- 最新Demo下载地址 猛击这里http://download.csdn.net/download/lixiaodaoaaa/5854171
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,