黑马程序员技术交流社区

标题: TCP复制文件代码问题 [打印本页]

作者: 殷士剑    时间: 2012-11-26 18:10
标题: TCP复制文件代码问题
  1. package TCP;

  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.InputStream;
  6. import java.io.PrintWriter;
  7. import java.net.Socket;

  8. public class CopyFileClient {

  9. /**
  10. * @param args
  11. * Tcp复制文件:通过网络传输文件
  12. */
  13. public static void main(String[] args) throws Exception{
  14. // TODO Auto-generated method stub
  15. //创建客户端的socket服务
  16. Socket s = new Socket("172.33.2.240",10006);
  17. //传送文件
  18. FileReader fReader = new FileReader(new File("e:\\CutDemo.java"));
  19. BufferedReader bReader = new BufferedReader(fReader);
  20. PrintWriter bout = new PrintWriter(s.getOutputStream(),true);
  21. String string = null;
  22. while((string = bReader.readLine())!=null){
  23. bout.write(string);
  24. }

  25. s.shutdownOutput();//关闭客户端的输出流。相当于给流中加入一个结束标记-1.
  26. //获取服务端信息
  27. InputStream bin = s.getInputStream();
  28. byte[] buff = new byte[1024];
  29. int length = bin.read(buff);
  30. String server = new String(buff,0,length);
  31. System.out.println("server info:"+server);

  32. //关闭资源
  33. fReader.close();
  34. s.close();

  35. }

  36. }

  37. package TCP;

  38. import java.io.BufferedReader;
  39. import java.io.FileWriter;
  40. import java.io.InputStreamReader;
  41. import java.io.OutputStream;
  42. import java.io.PrintWriter;
  43. import java.net.ServerSocket;
  44. import java.net.Socket;

  45. public class CopyFileServer {

  46. /**
  47. * @param args
  48. * Tcp复制文件:通过网络传输文件
  49. */
  50. public static void main(String[] args) throws Exception {
  51. // TODO Auto-generated method stub
  52. //创建服务端socket服务
  53. ServerSocket ss = new ServerSocket(10006);
  54. //获取客户端的 socket 服务
  55. Socket s = ss.accept();
  56. //获取客户端的Ip
  57. String ip = s.getInetAddress().getHostAddress();
  58. System.out.println(ip+"...connect");
  59. //获取服务端的文件
  60. BufferedReader bin = new BufferedReader(new InputStreamReader(s.getInputStream()));
  61. PrintWriter pw = new PrintWriter(new FileWriter("E:\\test\\client.java",true));//新建一个可写的文件
  62. String string = null;
  63. while((string= bin.readLine())!=null){
  64. pw.println(string);//按行来存储数据
  65. }
  66. OutputStream bout = s.getOutputStream();
  67. byte[] data = "文件传输成功".getBytes();
  68. bout.write(data, 0, data.length);

  69. //关闭资源
  70. pw.close();
  71. s.close();
  72. ss.close();
  73. }

  74. }
复制代码
代码不能完成文件复制的功能,但是不知道问题出在哪啦(都快看蒙啦),请高手指点。

作者: 邢晏玮    时间: 2012-11-27 00:15
本帖最后由 邢晏玮 于 2012-11-27 00:17 编辑

把你的第26行代码也就是bout . write (string )改成bout . println(string )就可以了你用的printwritet.最后在写的时候怎么能用write呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2