黑马程序员技术交流社区

标题: 网路编程里遇到个问题,找不到原因求助 [打印本页]

作者: nestor    时间: 2014-4-12 14:47
标题: 网路编程里遇到个问题,找不到原因求助
本帖最后由 nestor 于 2014-4-12 17:10 编辑

服务端:
  1. package NetDemo;
  2. import java.net.*;
  3. import java.io.*;

  4. class PicThread implements Runnable{
  5.         private Socket s;
  6.         PicThread(Socket s) {
  7.                 this.s=s;
  8.         }
  9.         @Override
  10.         public void run() {
  11.                 int count = 0;
  12.                 String ip=s.getInetAddress().getHostAddress();
  13.                 try {
  14.                         System.out.println(ip+":connected");
  15.                         InputStream in =s.getInputStream();
  16.                         
  17.                         File file =new File("E:\\Demo\\"+ip+"("+(count++)+").jpg");
  18.                         while (file.exists()) {
  19.                                 file =new File("E:\\Demo\\"+ip+"("+(count++)+").jpg");
  20.                         }
  21.                         
  22.                         FileOutputStream fos=new FileOutputStream(file);
  23.                         
  24.                         byte[] buf=new byte[1024];
  25.                         
  26.                         int len=0;
  27.                         while ((len=in.read(buf))!=-1) {
  28.                                 fos.write(buf, 0, len);
  29.                         }
  30.                         
  31.                         OutputStream out=s.getOutputStream();
  32.                         
  33.                         out.write("上传成功".getBytes());
  34.                         
  35.                         fos.close();
  36.                         s.close();
  37.                 } catch (Exception e) {
  38.                         throw new RuntimeException(ip+"上传失败");
  39.                 }
  40.                
  41.         }
  42. }

  43. class PicServer{
  44.         public static void main(String[] args) throws Exception{
  45.                 ServerSocket ss=new ServerSocket(10005);
  46.                 while (true) {
  47.                         Socket s=ss.accept();
  48.                         
  49.                         new Thread(new PicThread(s)).start();
  50.                 }
  51.         }
  52. }
复制代码

客户端:
  1. package NetDemo;
  2. import java.net.*;
  3. import java.io.*;


  4. class PicClient {
  5.         public static void main(String[] args) throws Exception {
  6.                 Socket s=new Socket("127.0.0.1",10005);
  7.                
  8.                 FileInputStream fis=new FileInputStream("E:\\Demo\\in.pic");
  9.                
  10.                 OutputStream out=s.getOutputStream();
  11.                
  12.                 byte[] buf=new byte[1024];
  13.                 int len=0;
  14.                 while ((len=fis.read(buf))!=-1) {
  15.                         out.write(buf, 0, len);
  16.                 }
  17.                
  18.                 s.shutdownOutput();
  19.                
  20.                 InputStream in=s.getInputStream();
  21.                 byte[] bufin=new byte[1024];
  22.                 int num=in.read(bufin);
  23.                 System.out.println(new String(bufin,0,num));
  24.                
  25.                 fis.close();
  26.                 s.close();
  27.         }
  28. }
复制代码

报错:
  1. 127.0.0.1:connected
  2. Exception in thread "Thread-0" java.lang.RuntimeException: 127.0.0.1上传失败
  3.         at NetDemo.PicThread.run(PicServer.java:35)
  4.         at java.lang.Thread.run(Thread.java:744)
复制代码

看了几遍还是找不到原因啊:'(


作者: Tking    时间: 2014-4-12 16:33
没错呀,代码没错,估计你把图片的名字和地址先确认下,正常情况下是可以运行呀?
主要你看写try里面的路径是不是对的
作者: NNERO    时间: 2014-4-13 15:44
代码没有问题,注意图片后缀名为jpg或者bmp,而不是pic。否则就会找不到文件,上传失败
  1. FileInputStream fis=new FileInputStream("E:\\Demo\\in.pic");
复制代码
中的in.pic改为in.jpg
看看你的是什么
作者: leon_hm    时间: 2014-4-13 15:56
把抛异常的语句改一下,把捕获的异常信息打印出来看看就比较好确定原因了
throw new RuntimeException(e.getMessage()+ip+"上传失败");




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