黑马程序员技术交流社区

标题: 上传文件问题 [打印本页]

作者: 黑马伍仪华    时间: 2012-3-22 08:41
标题: 上传文件问题
package day23_07;
import java.net.*;

import java.io.*;
//1.创建服务 2.获取服务端输出流 3读取输出流,写进文件 4.打印上传信息
public class reciever {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                ServerSocket ss=new ServerSocket(10005);
                Socket s=ss.accept();
               
                FileOutputStream fo=new FileOutputStream("c:\\2.gif");
                OutputStream out=s.getOutputStream();
                InputStream in=s.getInputStream();
                int len=0;
                while((len=in.read())!=-1){
                        fo.write(len);
                        fo.flush();
                       
                }
                System.out.println("上传完毕");

        }

}


public class Sender {

        /**
         * 思路:创建服务 1.创建文件 2.写文件 3.传输出去 4获取文件返回的信息
         */
        public static void main(String[] args)throws Exception {
       
                Socket s=new Socket("127.0.0.1",10005);
                OutputStream a=s.getOutputStream();
                FileOutputStream output=new FileOutputStream("c:\\1.gif");
                FileInputStream input=new FileInputStream("c:\\1.gif");
                byte[] shuzu=new byte[1024*1024];
               
                while(input.read(shuzu)!=-1){
                        a.write(shuzu);
                        a.flush();
                }
       
        System.out.println("上传成功");       
        }
}
这是我写的两个类,为什么显示连接错误?
作者: lucky_xingxing    时间: 2012-3-22 09:01
首先你的这个有两个错误,第一个这里 客户端 while(input.read(shuzu)!=-1)这里不应该这样写,还有客户端  FileOutputStream output=new FileOutputStream("c:\\1.gif");这句是多余的。这都不是重要的 。你的问题是出在你发送完毕没有关闭socket造成的。下面我贴上我修改后的代码
class reciever {

        /**
          * @param args
          */
         public static void main(String[] args) throws Exception{
                 ServerSocket ss=new ServerSocket(10007);
                 Socket s=ss.accept();
                 
                FileOutputStream fo=new FileOutputStream("1111.jpg");
                 OutputStream out=s.getOutputStream();
                 InputStream in=s.getInputStream();
                 int len=0;
                 while((len=in.read())!=-1){
                         fo.write(len);     
                  }
                 System.out.println("上传完毕");
                                s.close();
        }

}


class Sender {

        /**
          * 思路:创建服务 1.创建文件 2.写文件 3.传输出去 4获取文件返回的信息
          */
         public static void main(String[] args)throws Exception {
         
                Socket s=new Socket("127.0.0.1",10007);
                 OutputStream a=s.getOutputStream();
                 FileInputStream input=new FileInputStream("11.jpg");
                 byte[] shuzu=new byte[1024*1024];
                 int len = 0;
                while((len = input.read(shuzu))!=-1){
                         a.write(shuzu,0,len);
                 }
                                 s.close();
         
                                System.out.println("上传成功");        
                                }
}
作者: 黑马伍仪华    时间: 2012-3-22 09:34
技术真好。。。。谢谢奥




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