天籁晴空 2020-12-23 16:45 采纳率: 0%
浏览 11
已结题

socket 读取数据问题

onCreate里面
 new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    socket = new Socket("192.168.0.126", 10010);
                    InputStream inputStream = socket.getInputStream();
                    byte[] buffer = new byte[1024];
                    int len;
                    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    String str = "";
                    while(true){
                        //若套接字连接服务器,且输入流没有关闭
                        if((str = reader.readLine())!= null){
                            str += " ";
                        }
                    }
//                    while ((len = inputStream.read(buffer)) != -1) {
//                        String data = new String(buffer, 0, len);
//                        // 发到主线程中 收到的数据
//                        Message message = Message.obtain();
//                        message.what = 1;
//                        message.obj = data;
//                        handler.sendMessage(message);
//                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

为什么每次serversocket  发送的数据  

while(true)不执行,但是 
while ((len = inputStream.read(buffer)) != -1) 就可以自动读取 
  • 写回答

1条回答 默认 最新

  • IT-猕猴桃 2020-12-23 17:12
    关注
    你接收的是发送的文字,又不是文件,没有行可分,你使用readline()当然读不到东西,你可以试试
    read(char cbuf[], int off, int len)
    评论

报告相同问题?