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

作者:lqh 时间:2022-09-15 14:17:35 

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();
   }
 }
}

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

来源:http://blog.csdn.net/paulluo0739/article/details/8175170

标签:Android,adb,forword
0
投稿

猜你喜欢

  • Java设置PDF有序和无序列表的知识点总结

    2022-04-18 03:29:27
  • Android之日期时间选择控件DatePicker和TimePicker实例

    2023-08-02 14:57:26
  • Linux中Java开发常用软件安装方法总结

    2022-03-11 16:21:03
  • android自定义圆形倒计时显示控件

    2022-12-13 00:27:30
  • MyBatisPlus+Lombok实现分页功能的方法详解

    2021-07-04 06:34:57
  • 如何使用LinQ To Object把数组或DataTable中的数据进行向上汇总

    2022-04-05 17:07:33
  • Android多点触控实现图片自由缩放

    2023-12-15 20:48:40
  • SpringBoot配置和切换Tomcat流程详解

    2022-07-13 02:35:51
  • SpringBoot 集成 activiti的示例代码

    2023-01-22 10:22:03
  • log4j使用教程详解(怎么使用log4j2)

    2022-06-18 23:48:47
  • 解析rainbond以应用为中心的架构设计原理

    2023-02-05 14:19:50
  • 详解Android Studio如何导入第三方类库、jar包和so库

    2022-01-04 22:27:54
  • C++数组指针和二维数组详情

    2022-03-31 21:11:07
  • init output stream初始化输出流源码分析

    2023-01-08 09:53:20
  • C#中的除法运算符与VB.NET中的除法运算符

    2022-04-01 10:52:56
  • java8 利用reduce实现将列表中的多个元素的属性求和并返回操作

    2021-09-29 06:53:38
  • Java实现马踏棋盘算法

    2023-03-05 04:30:46
  • Java多维数组和Arrays类方法总结详解

    2022-04-27 22:30:18
  • android预置默认的语音信箱号码具体实现

    2022-08-22 07:51:59
  • MyBatis中基于别名typeAliases的设置

    2022-03-07 22:18:19
  • asp之家 软件编程 m.aspxhome.com