Android手機與PC端進行通訊
阿新 • • 發佈:2019-02-18
前陣子研究簡訊竊聽器的時候,碰到一個問題,需要手機和電腦PC之間進行通訊,互相傳輸資料,之間碰到的問題寫出來,方便大家共享,減少查詢資料的時間。
首先,有關網路的操作,沒有用執行緒,導致出現網路操作報錯:android.os.NetworkOnMainThreadException,android 版本不允許在主執行緒中進行網路訪問,需要將網路操作單獨放到一個執行緒中。
new Thread(){
public void run(){
//在此執行網路操作程式碼
}
}.start();
客戶端程式碼如下:
new Thread(){ public void run(){ System.out.println("before執行連線操作"); Socket s = null; try { s = new Socket("192.168.1.101", 30000); System.out.println("執行連線操作"); PrintWriter pw; BufferedReader br; if(s==null){ Log.e("socket","socket is null"); System.out.println("執行連線操作失敗"); } else { //br=new BufferedReader(new OutputStreamWriter(s.getOutputStream()),true); //pw = new PrintWriter(s.getOutputStream()); pw = new PrintWriter( new BufferedWriter( new OutputStreamWriter(s.getOutputStream())),true); if(pw!=null){ /*String str="aaaaaaaaa"; pw.println(str);*/ pw.println(sb.toString()); pw.flush(); } } } catch (IOException e) { e.printStackTrace(); } } }.start();
伺服器端程式碼如下:
public class ServerSocketClass { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("伺服器啟動。。。"); ServerSocket ss; try { ss = new ServerSocket(30000); while(true){ Socket s = ss.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String str; //BufferedWriter bw = new BufferedWriter(new FileWriter("D:/11.txt")); while ((str = in.readLine()) != null) { System.out.println(str); // bw.write(str); // bw.newLine(); } // bw.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
伺服器不停的接收來自客戶端傳送過來的資料,並進行顯示。同時,客戶端需要具有網路訪問許可權。