首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

怎么实现在单个线程内读写单个SOCKET

2012-08-02 
如何实现在单个线程内读写单个SOCKET?我不想把读写放在两个线程里面了,而且连接和重连也想放在这个单独线

如何实现在单个线程内读写单个SOCKET?
我不想把读写放在两个线程里面了,而且连接和重连也想放在这个单独线程内,现在我尝试如下的方式:
首先,既然要读,那就少不了一个WHILE循环,

Java code
         while(checkSocketState())        {                    try            {                if(dataInputStream.available()>0)               {                   parseCommand();               }            }            catch(Exception e)            {                Log.i("SocketClientThread", "fail to read inputStream ");                return;            }        }



如果有命令过来,就发到其他线程的消息队列里去,

然后是写,因为写的命令是其他线程发过来的,就需要一个HANDLER,

Java code
        Looper.prepare();        mMainHandler = new Handler()         {                         @Override            public void handleMessage(Message msg)             {                // 接收子线程的消息                sendMsg((String) msg.obj);            }         };        new HeartBeatThread(this).start();        Looper.loop();


但LOOPER.LOOP()一运行,就进入她的WHILE循环了(消息循环),就无法去执行我们的检查输入的相关代码了,

如何合并这两个循环呢,各位大牛们?

[解决办法]
HandlerThread

热点排行