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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 、__WSD吴少东 中级黑马   /  2013-4-26 09:18  /  1662 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 、__WSD吴少东 于 2013-4-26 14:40 编辑

代码在运行的时候没问题,文件也存在,但是客户端收不到服务器的反馈信息。不知道是怎么回事,我检查着代码没问题,IO流对应关系也正确。
大神们,求指点啊!!!!
  1. /*
  2.         需求:编写代码,客户端读取文件在本地读取文件,上传到服务端,并进行保存

  3. */
  4. import java.io.*;
  5. import java. net.*;
  6. /*
  7. 客户端;
  8. 步骤:
  9. 1. 创建服务,
  10. 2. 获取文件,
  11. 3. 将文件关联到输出流中,
  12. 4. 获取服务器反馈信息
  13. 5. 关闭资源
  14. */
  15. class  CopyClient
  16. {
  17.         public static void main(String[] args) throws Exception
  18.         {
  19.                 Socket s = new Socket("127.0.0.1",10006);

  20.                 File file = new File("ChartDemo.java");

  21.                 System.out.println(file.isFile());

  22.                 BufferedReader buff =
  23.                         new BufferedReader(new FileReader(file));

  24.                 PrintWriter pwout = new PrintWriter(s.getOutputStream(),true);

  25.                 BufferedReader bufin =
  26.                         new BufferedReader(new InputStreamReader(s.getInputStream()));



  27.                 String line = null;
  28.                 while((line=buff.readLine())!=null)
  29.                 {
  30.                         //System.out.println(line);
  31.                         pwout.println(line);
  32.                 }

  33.                 s.shutdownInput();//要加入结束表示,让服务端知道,我上传的文件完成了。

  34.                 String str = bufin.readLine();//获取服务器反馈信息。
  35.                 System.out.println(str);

  36.                 buff.close();
  37.                 s.close();
  38.         }
  39. }
  40. /*
  41. 服务端:
  42. 步骤:
  43. 1. 创建服务,
  44. 2. 获取客户端在流中的数据,
  45. 3. 将数据存储
  46. 4. 反馈数据给服务端
  47. 5. 关闭资源
  48. */
  49. class CopyServer
  50. {
  51.         public static void main(String[] arge) throws Exception
  52.         {
  53.                 ServerSocket ss = new ServerSocket(10006);
  54.                 Socket s = ss.accept();
  55.                 String ip = s.getInetAddress().getHostAddress();
  56.                 System.out.println(ip+"........connected");
  57.                 File file = new File("Chart.txt");
  58.                 PrintWriter pwout = new PrintWriter(new FileWriter(file),true);
  59.                
  60.                 BufferedReader bufin =
  61.                         new BufferedReader(new InputStreamReader(s.getInputStream()));
  62.                
  63.                

  64.                

  65.                 String line = null;
  66.                 while((line=bufin.readLine())!=null)
  67.                 {
  68.                         //System.out.println(line);
  69.                         pwout.println(line);
  70.                 }
  71.                
  72.                
  73.                 PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
  74.                 pw.println("上传成功");

  75.                 pwout.close();
  76.                 s.close();
  77.                 ss.close();
  78.         }
  79. }
复制代码

7 个回复

倒序浏览
嘻嘻 你终于发了 等待杨勇解题
回复 使用道具 举报
楼主你好:
如果代码没问题,那么就是因为你这是两个类,编译的时候,应该服务端先编译一下,执行。然后客户端编译一下再执行。
好好跟毕老师的代码对一遍,我就不帮你读代码了。
{:soso_e182:}


版主代理郑重提示:如果楼主问题已经解决那么。在自己发表的帖子下面,点“修改”,
然后把主题的分类标记成“已解决”。就OK了{:soso_e102:}
回复 使用道具 举报
本帖最后由 、__WSD吴少东 于 2013-4-26 12:37 编辑
袁梦希 发表于 2013-4-26 09:35
楼主你好:
如果代码没问题,那么就是因为你这是两个类,编译的时候,应该服务端先编译一下,执行。然后客 ...

哥们,这个是按照那个只执行的啊,你想啊,要是不先执行服务器端,客户端能发送东西么?

除了我把文件封包了,别的什么区别也没有。看了好久了,

大神,抱大腿啊!!!{:soso_e144:}{:soso_e154:}
回复 使用道具 举报
     }



                s.shutdownInput();//要加入结束表示,让服务端知道,我上传的文件完成了。//你在这里把读取流关了bufin就不能读数据了   所以结果就是那样 应该知道怎么改了吧


                String str = bufin.readLine();//获取服务器反馈信息。

                System.out.println(str);

回复 使用道具 举报
本帖最后由 、__WSD吴少东 于 2013-4-26 14:48 编辑
沈浩 发表于 2013-4-26 13:47
}

知道了!.....{:3_65:}
追问一下,为什么我用s.shutdownInput(),也能狗结束,而不卡住互相等待?
是不是就是客户端,没有等待的方法然后直接关闭资源推出了,这个就是TCP的特性吧
回复 使用道具 举报
、__WSD吴少东 发表于 2013-4-26 14:40
知道了!.....

哈哈  哥们抱我大腿吧    代码还是有问题
回复 使用道具 举报
袁梦希 发表于 2013-4-26 14:42
哈哈  哥们抱我大腿吧    代码还是有问题

果断抱大腿啊{:3_51:}  看着就够粗硬长的{:3_56:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马