当前位置: 代码迷 >> Android >> 客户端怎么能接收服务端非阻塞的socket发的消息
  详细解决方案

客户端怎么能接收服务端非阻塞的socket发的消息

热度:98   发布时间:2016-04-28 06:34:47.0
客户端如何能接收服务端非阻塞的socket发的消息
服务端开发工具:delphi,非阻塞的socket,
Androrid客户阻塞接收,但是接收不到.代码如下:
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inStr = in.readLine();

到服务端发回文字信息时,客户端阻塞在上面一行代码,始弱收不到消息.
请问如何能让客户端接收到服务端的消息.
------解决方案--------------------
阻塞与否只是数据发送的问题,数据是没有区别的,只要有就能收到。
------解决方案--------------------
楼主的代码是 按行读取数据,是否服务器也发送了行数据 ,也就是是否有换行符\r\n 之类的。
试试这样读取,按字节流。

BufferedInputStream bis = new BufferedInputStream(ins);  
    ByteArrayOutputStream bos = new ByteArrayOutputStream();  
    try {  
        byte[] buffer = new byte[128];  
        int n = -1;  
        while ((n = bis.read(buffer)) != -1) {  
            bos.write(buffer, 0, n);  
           //这地方可以转换一下数据,分析一下数据是什么。
        }  
    } catch (IOException e) {  
        e.printStackTrace();  
    }

------解决方案--------------------
那就要看看服务器端的问题了,用telnet 试试服务器。
------解决方案--------------------
PHP是单线程,别想了。。
------解决方案--------------------
还遇到过阻塞的情况
  相关解决方案