黑马程序员技术交流社区

标题: 关于TCP多线程上传图片 [打印本页]

作者: 王梁星    时间: 2012-10-9 11:15
标题: 关于TCP多线程上传图片
本帖最后由 缘木求鱼 于 2012-10-14 20:08 编辑



  1. 问题在13、37行:
  2. 为什么缓冲区行不通?
  3. 注:这个问题有段时间了,我又编辑了遍,复制就能运行的。
  4. <div class="blockcode"><blockquote>//IPTCPUploadPic.java

  5. import java.net.*;
  6. import java.io.*;
  7. class PicClient{
  8.   public static void main(String[] args)throws Exception{
  9.     Socket s=new Socket("127.0.0.1",1200);
  10.     BufferedReader br=new BufferedReader(new FileReader("end1.bmp"));
  11.     OutputStream os=s.getOutputStream();
  12.     byte[] buf=new byte[1024];
  13.     int len=0;
  14.     while((len=br.read(buf))!=-1)
  15.       os.write(buf,0,len);//?报错?
  16.     s.shutdownOutput();
  17.     InputStream is=s.getInputStream();
  18.     byte[] bufin=new byte[1024];
  19.     int num=is.read(bufin);
  20.     System.out.println(new String(bufin,0,num));
  21.     br.close();
  22.     s.close();
  23.   }
  24. }

  25. class PicServer{
  26.   public static void main(String[] args)throws Exception{
  27.     ServerSocket ss=new ServerSocket(1200);
  28.     Socket s=ss.accept();
  29.     String ip=s.getInetAddress().getHostAddress();
  30.     System.out.println("["+ip+"]");
  31.     BufferedReader br=
  32.         new BufferedReader(new InputStreamReader(s.getInputStream()));
  33.     PrintWriter pw=new PrintWriter(new FileWriter("end3.bmp"),true);
  34.     FileOutputStream fos=new FileOutputStream("end3.bmp");
  35.     byte[] buf=new byte[1024];
  36.     int num=0;
  37.     while((num=br.read(buf))!=-1)
  38.       pw.println(num);//?与13行报相同的错?
  39.     PrintWriter pww=new PrintWriter(s.getOutputStream(),true);
  40.     pww.println("upload successful");
  41.     br.close();
  42.     s.close();
  43.     ss.close();
  44.   }
  45. }
复制代码

作者: 唐增友    时间: 2012-10-9 11:39
好像没有错误啊,只是警告
说没被使用
br没有关闭
作者: 王梁星    时间: 2012-10-9 22:51
唐增友 发表于 2012-10-9 11:39
好像没有错误啊,只是警告
说没被使用
br没有关闭

不,这下错误来了。我有编辑了遍。自己再试试?
作者: qhasilver    时间: 2012-10-14 15:55
  1. import java.net.*;
  2. import java.io.*;

  3. class PicClient {
  4.         public static void main(String[] args) throws Exception {
  5.                 Socket s = new Socket("127.0.0.1", 1200);
  6.                 BufferedInputStream br = new BufferedInputStream(new FileInputStream(
  7.                                 "E:\\hi.jpg"));
  8.                 OutputStream os = s.getOutputStream();
  9.                 byte[] buf = new byte[1024];
  10.                 int len = 0;
  11.                 while ((len = br.read(buf)) != -1) {
  12.                         os.write(buf, 0, len);
  13.                 }
  14.                 s.shutdownOutput();
  15.                 br.close();
  16.                 s.close();
  17.         }
  18. }

  19. class PicServer {
  20.         public static void main(String[] args) throws Exception {
  21.                 ServerSocket ss = new ServerSocket(1200);
  22.                 Socket s = ss.accept();
  23.                 String ip = s.getInetAddress().getHostAddress();
  24.                 System.out.println("[" + ip + "]");
  25.                 InputStream is = s.getInputStream();//获得输入流
  26.                 BufferedInputStream bos = new BufferedInputStream(is);//缓冲区
  27.                 FileOutputStream fos = new FileOutputStream("d:\\haha.jpg");
  28.                 byte[] buf = new byte[1024];
  29.                 int num = 0;
  30.                 while ((num = bos.read(buf)) != -1) {
  31.                         fos.write(buf, 0, num);
  32.                 }
  33.                 System.out.println("upload successful");
  34.                 fos.close();
  35.                 bos.close();
  36.                 is.close();
  37.                 s.close();
  38.                 ss.close();
  39.         }
  40. }
复制代码
不晓得是不是你想要的
作者: 王梁星    时间: 2012-10-14 20:08
qhasilver 发表于 2012-10-14 15:55
不晓得是不是你想要的

通过看你提供的代码,我已经知道哪里的问题了。只能说,基础掌握的真是不牢阿

谢谢




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