关于socket编程 客户端不能接受服务端信息问题

private void send() {
try {
tvGetContent.append("我说:" + etSendContent.getText().toString()
+ "\n");
writer.write(etSendContent.getText().toString() + "\n");
writer.flush();
etSendContent.setText("");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private void connect() {

    new AsyncTask<Void, String, Void>() {

        @Override
        protected Void doInBackground(Void... params) {
            String line;
            try {
                socket = new Socket(etSendIp.getText().toString(), 12345);

                writer = new BufferedWriter(new OutputStreamWriter(
                        socket.getOutputStream()));
                reader = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
                publishProgress("success");

                while ((line = reader.readLine()) != null) {
                    publishProgress(line);
                }
                reader.close();

            } catch (UnknownHostException e) {
                Toast.makeText(MainActivity.this, "无法建立链接",
                        Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                Toast.makeText(MainActivity.this, "无法建立链接",
                        Toast.LENGTH_SHORT).show();
            }
            return null;

        }

        @Override
        protected void onProgressUpdate(String... values) {

            if (values[0] == "success") {
                Toast.makeText(MainActivity.this, "链接建立成功",
                        Toast.LENGTH_SHORT).show();
            }
            tvGetContent.append("别人说:" + values[0] + "\n");
            super.onProgressUpdate(values);
        }

    }.execute();

}
主要问题是;客户端与客户端不能通讯,客户端发送消息到服务器,服务器是能结束消息的,同时服务器也能正确的发送消息出来,但是客户端却接收不到消息。当手动关闭服务器的时候,客户端则会一次性把前面发送的消息全部接收到。
这是我客户端发送消息和接受消息的代码  服务器短的代码应该没有问题,求各位大神指点一下

1个回答

服务器端收到请求后立即回复“success”了吗?断点调试下客户端的代码走到哪一步了?是不是读取回复代码有问题呢。

qq_36234613
qq_36234613 回复小叶525: 你好 请问这个最后是怎么解决的?
接近 3 年之前 回复
wojiushiwo945you
毕小宝 回复小叶525: \n和输出完毕之间没有关系。猜测可能是你客户端读取回复时readLine是以行为单位的,没有\n可能影响了readLine操作。
大约 5 年之前 回复
u013935745
小叶525 嗯 刚刚检查是服务器端write的时候出问题了 socket.getOutputStream().write((out + "\n").getBytes("UTF-8")); out是个String类型的传出参数 为什么在后面加\n 客户端和客户端就能通讯 而没有\n就不能通讯阻塞了 \n除了换行在write中还有提示服务器输出完毕的意思?
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问