日期:2014-05-20  浏览次数:20964 次

求看看这段socket 代码为什么执行不下去了,谢谢
各位好

以下是一段socket只用来接收的代码,我用debug调试,在accept()后,执行到标记处就执行不下去了,这是为什么呢?

Java code

    // receiver class
    class ServerListener extends Thread{

        Socket serverSocket = null;
        
        @Override
        public void run() {
            while(true){
                try {
                    Log.w(TAG_LISTENER, "ServerListener run() {");
                    serverSocket = mSocket.accept();
                    
                    BufferedInputStream in = new BufferedInputStream(serverSocket.getInputStream());
                    
                    byte[] reader = new byte[10];
                    int count = 0;
                    boolean flag = false;
                    while((count = in.read(reader))>0){   <---  执行不下去了
                        flag = true;
                        bq.enQueue(reader[0]);
                        Log.w(TAG_LISTENER, reader.toString() + " is added to byteQueue");
                    }
                    Log.w(TAG_LISTENER, "***** ServerSender start");
                    
                    if(flag){
                        new ServerSender(serverSocket).start();
                        flag = false;
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            Log.w(TAG_LISTENER, "}");
            }
        }
    }



先谢谢了。

------解决方案--------------------
in.read(reader) 是堵塞性方法,楼主可以找一下这方面的资料看一下。