关于readLine()方法的问题

放不完的风筝 2015-05-18 11:56:49
import java.io.*;
import java.net.*;
/*
练习:服务器接收客户端的字符,并转换为大写返回给客户端。
*/
public class DemoTransform
{
}

class Client
{
public static void main(String[] args)throws Exception
{
Socket s = new Socket(InetAddress.getLocalHost(),8080);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
bw.write(str);
bw.newLine();
bw.flush();
BufferedReader br2 = new BufferedReader(new InputStreamReader(s.getInputStream()));
String read = br2.readLine();
System.out.println(read);
s.close();
}
}
class Server
{
public static void main(String[] args)throws Exception
{
ServerSocket ss = new ServerSocket(8080);
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = br.readLine();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( s.getOutputStream()));
str=str.toUpperCase();
bw.write(str);
// bw.newLine();
bw.flush();
s.close();
ss.close();
}
}

readLine()是阻塞式方法
客户端的bw要写回车符或者换行符我可以理解,服务器的bw不是也要写回车符和换行符吗?
为什么我没写,客户端的readLine()也能返回?

...全文
223 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
warren1102 2015-05-18
  • 打赏
  • 举报
回复
我的理解是.readLine() 怎么判断是一行..通过回车和换行符来判断..而实际上newLine()方法把分隔符当做String写了出去, 所以客户端等着收就是..收到了就是带着分隔符的,所以回来的时候就不用再写了.
放不完的风筝 2015-05-18
  • 打赏
  • 举报
回复
引用 1 楼 warren1102 的回复:
我的理解是.readLine() 怎么判断是一行..通过回车和换行符来判断..而实际上newLine()方法把分隔符当做String写了出去, 所以客户端等着收就是..收到了就是带着分隔符的,所以回来的时候就不用再写了.
确实说得通。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧