本帖最后由 黄鸿达 于 2013-2-21 23:28 编辑
- import java.io.*;
- import java.net.*;
- public class Send2 {
-
- public static void main(String[] args) throws Exception {
-
- Socket s=new Socket(InetAddress.getLocalHost().getHostAddress(),12650);
- BufferedReader br=
- new BufferedReader(new FileReader("D:\\1.txt"));
- BufferedWriter bw=
- new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
-
- String len=null;
- while((len=br.readLine())!=null){
- bw.write(len);
- bw.newLine();
- bw.flush();
- }
- System.out.print("1");
- BufferedReader bbr=
- new BufferedReader(new InputStreamReader(s.getInputStream()));
- System.out.print("2");
- while((len=bbr.readLine())!=null){
- System.out.print("我写2-1");
- System.out.print(len);
- System.out.print("我写2-2");
- }
- System.out.print("2-1");
- bw.close();
- br.close();
- //s.close();
- }
- }
复制代码- import java.io.*;
- import java.net.*;
- public class Re2 {
- public static void main(String[] args)throws Exception{
-
- ServerSocket ss=new ServerSocket(12650);
- Socket s=ss.accept();
-
- BufferedReader br=
- new BufferedReader(new InputStreamReader(s.getInputStream()));
- BufferedWriter bw=
- new BufferedWriter(new FileWriter("D:\\3.txt"));
-
- String len=null;
- while((len=br.readLine())!=null){//这里~~~~~为什么
- <font>br.readLine()</font><span style="background-color: rgb(255, 255, 255); ">为什么 </span><font>读不到NULL?</font>
- System.out.print("我写");
- bw.write(len);
- bw.newLine();
- bw.flush();
- System.out.print("我写1");
- }
- System.out.print("3");
- PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
- System.out.print("4");
- pw.println("上传完毕");
- bw.close();
- br.close();
- }
- }
复制代码 经过写我打印语句,我也知道是因为Re2类,在while((len=br.readLine())!=null)这个语句中还没有结束,才导致下面打印3语句没有执行,
也跟毕老师23天视频14,12分20秒左右讲的 2边都在等。
问题1:我知道要加结束标记给服务器端,但是我不懂Re2类,也就是服务器端 的 br.readLine()为什么 读不到NULL?
问题2:要加结束标记,为套接字.shutdownXXXStream方法,是不是最简洁方便公认最好的方法?
新问题3:为什么要加flush(),程序后面也有close方法,最终也要会刷新,但是不加flush却会出错,不解。求大侠那一部分的流程 |
|