您的位置:首页 > 移动开发 > Android开发

Android手机与PC端进行通信

2016-02-18 21:09 531 查看
前阵子研究短信窃听器的时候,碰到一个问题,需要手机和电脑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();
}
}
}


服务器不停的接收来自客户端发送过来的数据,并进行显示。同时,客户端需要具有网络访问权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: