A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿牛 中级黑马   /  2012-3-30 14:49  /  2223 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师课堂上的例子,往服务器上复制文件,我下面的程序我知道没有给它设置结束标志,但应该是已经在当前目录下有复制文件的,但为什么复制文件内容却为空!为什么呢?我在服务器端out.println(line);写入System.out.println(line);测试结果在控制台上能打印出复制文件,说明客户端是没问题的,服务器端代码哪有问题?大伙帮忙看看。


import java.net.*;
import java.io.*;
class  textClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s=new Socket("192.168.0.4",10003);
                BufferedReader bufr=
                        new BufferedReader(new FileReader("chatDemo.java"));
                PrintWriter out=new PrintWriter(s.getOutputStream(),true);
                String line=null;
                while((line=bufr.readLine())!=null)
                {
                        out.println(line);

                }
       
                BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
                String str=bufIn.readLine();
                System.out.println(str);

                bufr.close();
                s.close();
        }
}
class textServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss=new ServerSocket(10003);
                Socket s=ss.accept();
                BufferedReader bufr=new BufferedReader(new InputStreamReader(s.getInputStream()));
                PrintWriter out=new PrintWriter(new FileWriter("co---py.java",true));

               
                String line=null;
                while((line=bufr.readLine())!=null)
                {
                        //System.out.println(line);  //可以在控制台上打印出要复制的文件来,说明客户端没问题呀,但问题在哪。。
                        out.println(line);

                }
                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
                pw.println("upload sucess");
                out.close();
                ss.close();
                s.close();
        }

}

2 个回复

倒序浏览
import java.net.*;
import java.io.*;
class  textClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s=new Socket("192.168.0.4",10003);
                BufferedReader bufr=
                        new BufferedReader(new FileReader("chatDemo.java"));
                PrintWriter out=new PrintWriter(s.getOutputStream(),true);
                String line=null;
                while((line=bufr.readLine())!=null)
                {
                        out.println(line);

                }
              s.shutdownOutput();    // 输出流的结束标记你没有给出  所以textServer里的readLine() 读是读到数据了 但是读不到结束标记 所以readLine 阻塞等待中                BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
                String str=bufIn.readLine();
                System.out.println(str);

                bufr.close();
                s.close();
        }
}
class textServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss=new ServerSocket(10003);
                Socket s=ss.accept();
                BufferedReader bufr=new BufferedReader(new InputStreamReader(s.getInputStream()));
                PrintWriter out=new PrintWriter(new FileWriter("co---py.java",true));

               
                String line=null;
                while((line=bufr.readLine())!=null)
                {
                        //System.out.println(line);  //可以在控制台上打印出要复制的文件来,说明客户端没问题呀,但问题在哪。。
                        out.println(line);

                }
                PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
                pw.println("upload sucess");
                out.close();
                ss.close();
                s.close();
        }

}
回复 使用道具 举报
贠(yun)靖 发表于 2012-3-30 16:06
import java.net.*;
import java.io.*;
class  textClient

一语中的,搞定!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马