尼玛原来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上看出问题所在的