今天照着 android疯狂讲义 学习了一下android网络编程,来实现pc和android的通信,但是app一运行,就提示socket has stopped,接下来给出解决办法:
socket的操作不能在主线程中进行,你必须在开一个线程,你可以在main函数中new Thread,如下:
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
socket = new Socket("192.168.1.201", 30002);
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
ling = br.readLine();
br.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}.start();//记住得要start
原因是:当客户端读取服务器数据,返回数据后,线程会被阻塞,那如果把去读取数据的代码放在主线程中的话,那么主线程就被阻塞了。