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

 更新时间:2017年04月21日 10:35:38   投稿:lqh  
这篇文章主要介绍了android手机端与PC端使用adb forword通信的相关资料,需要的朋友可以参考下

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

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

相关文章

  • Android中OptionMenu用法实例

    Android中OptionMenu用法实例

    这篇文章主要介绍了Android中OptionMenu用法,实例分析了Android中OptionMenu创建操作的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 详解Android中Fragment的两种创建方式

    详解Android中Fragment的两种创建方式

    本篇文章主要介绍了Android中Fragment的两种创建方式,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • Android中Handler消息传递机制

    Android中Handler消息传递机制

    这篇文章主要介绍了Android中Handler消息传递机制 的相关资料,需要的朋友可以参考下
    2016-03-03
  • Android使用ViewPager实现图片滑动预览效果

    Android使用ViewPager实现图片滑动预览效果

    这篇文章主要为大家详细介绍了Android使用ViewPager实现图片滑动预览效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android判断用户的网络类型实例讲解(2/3/4G、wifi)

    Android判断用户的网络类型实例讲解(2/3/4G、wifi)

    这篇文章主要介绍了Android判断用户的网络类型实例,用户的网络类型分为2G、3G、4G、wifi,通过Android如何判断用户的网络类型,本文为大家揭晓
    2015-12-12
  • Android动画效果之自定义ViewGroup添加布局动画(五)

    Android动画效果之自定义ViewGroup添加布局动画(五)

    这篇文章主要介绍了Android动画效果之自定义ViewGroup添加布局动画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android Dialog对话框实例代码讲解

    Android Dialog对话框实例代码讲解

    本文通过实例代码给大家介绍了Android Dialog对话框的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Android 无预览拍照功能

    Android 无预览拍照功能

    最近小编接到一个项目,遇到这样的需求,要求在后台拍照并保存功能,也就是无预览拍照功能,下面小编给大家带来了实例代码,需要的朋友参考下
    2018-02-02
  • Android中异步类AsyncTask用法总结

    Android中异步类AsyncTask用法总结

    这篇文章主要介绍了Android中异步类AsyncTask用法,分析总结了Async Task类的功能、特点及相关的使用技巧与注意事项,需要的朋友可以参考下
    2016-01-01
  • Android微信签名知识的总结

    Android微信签名知识的总结

    这篇文章给大家详细总结了Android微信签名用到的知识,文中通过具体的实现过程给大家进行演示,相信对大家的理解很有帮助,下面来一起看看吧。
    2016-09-09

最新评论