您好,登錄后才能下訂單哦!
這篇文章給大家介紹adb forword通信怎么在android移動端與PC端中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
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(); } } }
關于adb forword通信怎么在android移動端與PC端中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。