PC端与Android手机端使用adb forword通信

服务器端代码如下:

import java.io.IOException; import java.io.ObjectOutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Server {   public static final String TAG = "server";   public static int PC_LOCAL_PORT = 22222;   public static int PHONE_PORT = 22222;   public static String ADB_PATH = "adb.exe";   /**    * @param args    */   public static void main(String[] args) {     // TODO Auto-generated method stub     YingyonghuiHubServer.execAdb();   }   public static void execAdb() {     // run the adb bridge     try {       Process p = Runtime.getRuntime().exec(           ADB_PATH + " forward tcp:" + PC_LOCAL_PORT + " tcp:"               + String.valueOf(PHONE_PORT));       Scanner sc = new Scanner(p.getErrorStream());       // If there is some output, it failed to start adb       if (sc.hasNext()) {         while (sc.hasNext())           System.out.println(sc.next());         System.err.println("Cannot start the Android debug bridge");         return;       }       initializeConnection();     } catch (Exception e) {       System.err.println(e.toString());     }   }   static Socket socket;   public static void initializeConnection() {     // Create socket connection     try {       socket = new Socket("localhost", PC_LOCAL_PORT);       ObjectOutputStream oos = new ObjectOutputStream(           socket.getOutputStream());       oos.writeObject("lalala");       oos.close();       socket.close();     } catch (UnknownHostException e) {       System.err.println("Socket connection problem (Unknown host)"           + e.getStackTrace());       e.printStackTrace();     } catch (IOException e) {       System.err.println("Could not initialize I/O on socket");       e.printStackTrace();     }   } } 

 客户端代码如下:

import java.io.IOException; import java.io.ObjectInputStream; import java.net.ServerSocket; import java.net.Socket; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; public class Client extends Activity {   public static final String TAG = "client";   public static int PHONE_PORT = 22222;   Context mContext = null;   TextView textView = null;   ServerSocket server = null;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     this.mContext = this;     this.textView = (TextView) this.findViewById(R.id.textView1);     try {       server = new ServerSocket(PHONE_PORT);     } catch (IOException e) {       e.printStackTrace();       return;     }     new RepackTestTask().execute();   }   private class RepackTestTask extends AsyncTask {     @Override     protected Object doInBackground(Object... params) {       Socket client = null;       // initialize server socket       while (true) {         try {           // attempt to accept a connection           client = server.accept();           Log.d(TAG, "Get a connection from "               + client.getRemoteSocketAddress().toString());           ObjectInputStream ois = new ObjectInputStream(               client.getInputStream());           String somewords = (String) ois.readObject();           Log.d(TAG, "Get some words" + somewords);           this.publishProgress(somewords);           client.close();         } catch (IOException e) {           Log.e(TAG, "" + e);         } catch (ClassNotFoundException e) {           // TODO Auto-generated catch block           e.printStackTrace();         }       }     }     @Override     protected void onProgressUpdate(Object... values) {       super.onProgressUpdate(values);       Toast.makeText(mContext, values[0].toString(), Toast.LENGTH_LONG)           .show();     }   } } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. Android(安卓)Audio代码分析17 - setvolume函数
  2. Android应用程序启动过程源代码分析(2)
  3. Android(安卓)Studio开发过程中各种问题
  4. NDK C++线程中如何调用JAVA API
  5. Android(安卓)Audio代码分析23 - attachAuxEffect函数
  6. android的Android(安卓)中Intent和PendingIntent的区别(转)
  7. Android中如何实现图像的闪动
  8. Android学习笔记(5)——Android——HelloWorldDemo
  9. Android(安卓)Audio代码分析23 - attachAuxEffect函数

随机推荐

  1. Android调用相机拍摄照片并显示到 ImageV
  2. 推送2
  3. Android自定义气球Overlay的开发
  4. Android的handler和callback机制
  5. cocos2dx实现获得设备的网络连接状态
  6. Android本地APP集成Mui框架
  7. Android开发经验之获取画在画布上的字符
  8. Android为ViewPager增加切换动画——使用
  9. 在 WebView 中获取当前网络状态(Wi-Fi 3G
  10. Android(安卓)已申请权限仍然提示 open f