Android手机与PC端进行通信

来源:互联网 发布:js数组长度函数 编辑:程序博客网 时间:2024/04/29 05:25

        前阵子研究短信窃听器的时候,碰到一个问题,需要手机和电脑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 stubSystem.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 blocke.printStackTrace();} }}

服务器不停的接收来自客户端发送过来的数据,并进行显示。同时,客户端需要具有网络访问权限。




0 0