bufferedreader 和bufferedwriter

今天在写java socket编程server和client进行数据传输时突然遇到了一个问题:


在server.java时,创建了两个输入输出流:

      DataInputStream fromclient=new DataInputStream(socket.getInputStream());
    DataOutputStream toclient=new DataOutputStream(socket.getOutputStream());

    然后等待接收客户端发来的信息,并将信息传回给客户端:

   int message=fromclient.read();   //读取客户端的信息
   toclient.write(message+2);  //将信息传回

在client.java时,同样创建两个输入输出流:

    fromserver=new DataInputStream(socket.getInputStream());
    toserver=new DataOutputStream(socket.getOutputStream());

   然后向服务器发送数据,并接受客户端传来的信息:

    toserver.write(Integer.parseInt(message));
    int area=fromserver.read();

     此时,客户端和服务器都能正确的接收到发送的数据。


     但是,当把输入输出流换成文本传输模式的输入输出流时,传输就会出现问题:

在server.java时,创建了两个输入输出流:

    BufferedReader  serverreader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    BufferedWriter serverwriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

    同样接受客户端的数据:    String message=serverreader.readLine(); 

在client.java时,同样创建两个输入输出流:

    clientreader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    clientwriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

    然后向服务器发送数据,

    String message=jtf.getText();   //从文本框中获得输入的字符串

    clientwriter.write(message);    //写到缓冲区
    clientwriter.flush();   //发送给服务器

    在运行程序时,却发现,服务器得不到message。

后来经过查资料发现:

在写socket时候,用DataInputStream 怎样都行,但是使用了装饰着模式用了BufferedReader之后就出现了问题,是因为在readLine()时,只有在遇到\r \n的时候才会有返回值,修改后就能过得到数据了。



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值