android socket通信不成功

来源:互联网 发布:初中数学软件有哪些 编辑:程序博客网 时间:2024/05/22 12:03

尼玛原来socket通信都好好的, 后面在应用加了一个横屏的代码,死活是通信不了,折腾了三天才搞清楚原因,其实一开始就应该怀疑是新加入的代码引起的,可是。。。


onCreate() {

....

if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

...

new Thread(){

public void run() {

socket = new Socket("192.168.2.110", 8000);

os  = socket.getOutputStream();

  is = socket.getInputStream();
  
} catch (UnknownHostException e) {
// TODO Auto-generated catch block

e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}


dis=new DataInputStream(is);
ps=new PrintStream(os);

}

}


 }

加入上面的代码后,会导致onCreate被调用两次,由于socket的建立我是在onCreate回调里在另一个线程里完成的(在主线程里创建socket运行时会报错),  因此会建立两个socket到服务端的连接,而我在服务端没有对多客户支持,所以后续的触摸事件监听函数里实际上用的是第二个socket对应的输出流,而服务端绑定的是第一个socket对应的输出流,所以才会出现收不到数据的情况。。。咳, 还是从log上看出问题所在的