黑马程序员技术交流社区
标题:
关于readLine()方法
[打印本页]
作者:
mengxiang1993
时间:
2015-2-3 16:31
标题:
关于readLine()方法
在java基础视频教程网络编程TCP 第23天-13 首先客户端向服务器端写数据,客户端代码如下
//从键盘读数据
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//将数据写入到socket流的输出流,发送给服务器端
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line=null;
while((line=br.readLine())!=null){
bw.write(line);
//输出一个换行
bw.newLine();
bw.flush();
}
毕老师提到服务器端没有读到数据有两点原因:
一:没有刷新缓冲区,也就是必须写 bw.flush();
二: 必须输出一个换行,服务器端的readLine()方法必须读到回车符才会返回数据
两点疑问:1.我们在控制台不是都按回车了吗,那个回车服务器端读不到吗?
2.在java中回车是不是代表一次数据的录入结束,即一按回车数据才发送出去?
作者:
黄宝宝
时间:
2015-2-3 16:52
看不太懂什么意思额。上个完整的点代码可好。
作者:
mengxiang1993
时间:
2015-2-3 17:53
/**
* 需求:1.键盘读取字符,并发送到服务器端。 2.由服务器端将字符转换成大写字符,返回给客户端。 3.客户端读取数据,打印
* 4.当客户端输出over,转换结束,关闭资源
*
* 步骤:1. 建立socket服务,指定要连接的主机和端口。 2. 通过IO读取键盘录入 3.
* 通过socket流中的输出流,将数据写入到该流中,通过网络发送到服务器端 4. 通过socket流中的输入流,读取从服务器端返回的数据,打印 5.
* 当输出over时,转换结束 6. 关闭资源
*/
public class TCPClient {
public static void main(String[] args) throws UnknownHostException,
IOException {
// 1.建立socket服务,指定要连接的主机和端口
Socket s = new Socket("localhost", 10009);
// 2.通过IO读取键盘录入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 3.获取socket流中的输出流
BufferedWriter bwOut = new BufferedWriter(new OutputStreamWriter(
s.getOutputStream()));
// 4.获取socket流中的输入流
BufferedReader brIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));
// 定义一行数据
String line = null;
// 写字符到服务器端,从服务器端读返回的大写字符
while ((line = br.readLine()) != null) {
// 键盘读到over,转换结束
if (line.equals("over")) {
break;
}
bwOut.write(line);
// 输出一个回车符
bwOut.newLine();
// 刷新缓冲区
bwOut.flush();
String str = brIn.readLine();
System.out.println(str);
}
// 5.关闭资源
br.close();
// close后在socket流中加了一个-1,告诉服务端的readLine()方法,readLine()方法里面也调用的是read方法,所以遇到-1结束。
//当然也可以在服务器端的while循环里对over进行判断。
s.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2