首页 > 编程语言 > 详细

Java Socket 使用BufferedWriter和BufferedReader要注意readLine 以及换行标志的发送

时间:2014-05-12 09:47:25      阅读:549      评论:0      收藏:0      [点我收藏+]

当接收的类使用的是BufferedReader,发送的类是BufferedWriter的时候,要注意发送的一行要有换行标识符。

请看下面一个例子,服务器接收不到客户端的信息。

服务器:

bubuko.com,布布扣
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by 290248126 on 14-5-10.
 */
public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8088);
        Socket socket = serverSocket.accept();
        System.out.println("一个客户端连接了");

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println("客户端:" + bufferedReader.readLine());

        Thread.sleep(100000);
        socket.close();
        serverSocket.close();
    }
}
bubuko.com,布布扣

 

客户端:

bubuko.com,布布扣
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by 290248126 on 14-5-10.
 */
public class Client {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("localhost",8088);
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bufferedWriter.write("你好,我是客户端!");
        bufferedWriter.flush();
        System.out.println("我们已经发送出去");
        Thread.sleep(100000);
        socket.close();
    }
}
bubuko.com,布布扣

在上面的客户端中,write的时候并没有发送换行标识符,因此服务器在接收的时候,readLine是读取一行,没遇到换行就读取不出来。

因此服务器接收不到客户端的信息。

 

解决方案方法如下:

只需要修改客户端部分:

bufferedWriter.write("你好,我是客户端!\n");

或者:

bufferedWriter.write("你好,我是客户端!");
bufferedWriter.newLine();

使用bufferedWriter的newLine()方法。
记得发送过去的时候要调用flush()刷新。

另外,客户端程序的正常调用socket.close()之后,服务器的readLine会读取到null,由此判断客户端断开连接。如果直接停止客户端程序,服务器会得到异常:Connection reset

Java Socket 使用BufferedWriter和BufferedReader要注意readLine 以及换行标志的发送,布布扣,bubuko.com

Java Socket 使用BufferedWriter和BufferedReader要注意readLine 以及换行标志的发送

原文:http://www.cnblogs.com/wuyou/p/3720626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!