API(文件下载&&swing简单聊天室)

本文详细介绍了客户端如何从服务器下载文件的具体步骤,包括客户端与服务器之间的连接建立、文件名的传递、文件读取与发送的过程以及客户端接收并保存文件的方式。

一、文件的下载发送
文件的下载是指客户端从服务器端下载一个文件到客户端;
比如LOL的客户端,是要去LOL的官方服务器上把客户端的安装包下载到本地后再安装。

思路:
/**
* 1.启动服务器并且等待客户端上线
* 2.客户端连接服务器
* 3.客户端告知服务器要下载的文件名
* 4.服务器接收文件名并在本地找到对应文件
* 5.服务器将该文件从硬盘读到内存中,再写入网络中
* 6.客户端从网络上下载该文件,并保存到本地
* 7.关闭连接
*/

创建FileServer类:
main方法:

  1. 建立服务器

    //1\创建服务器
    ServerSocket ss=new ServerSocket(5566);
    //2\等待客户端
    Socket sk=ss.accept();

    //6\服务器接受来自客户端发送的文件路径 //请下载e:\temp\abc.rar
    InputStream is=sk.getInputStream();
    InputStreamReader isr=new InputStreamReader(is);
    BufferedReader br=new BufferedReader(isr);
    String fname=br.readLine(); //fname=e:\temp\abc.rar

    //7\服务器开始读取本地文件
    File f=new File(fname); //File f=new File(“e:\temp\abc.rar”);
    if(f.exists()){
    //创建文件的字节读流
    FileInputStream fis=new FileInputStream(f);
    BufferedInputStream bis=new BufferedInputStream(fis);
    byte[] bs=new byte[100];

     //到客户端的套接字写流
     OutputStream os=sk.getOutputStream();
     BufferedOutputStream bos=new BufferedOutputStream(os);
    
     //8\一边读取文件一边将文件的字节流输入到网络的套接字中
     while(bis.read(bs)!=-1){
         bos.write(bs);
         bos.flush();
     }
     bos.close();
     bis.close();
     br.close();
    

    }

创建FileClient类:
main方法:

//3\客户端连接到服务器
Socket sk=new Socket(InetAddress.getByName("127.0.0.1"), 5566);

//4\客户端由用户输入要下载的文件名
Scanner mys=new Scanner(System.in);
System.out.println("请输入你要下载的文件名:");   //e:\\temp\\abc.rar
String filename=mys.next();               //filename=e:\\temp\\abc.rar

//5\客户端将文件名发送到服务器    
OutputStream os=sk.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os)
BufferedWriter bw=new BufferedWriter(osw);
bw.write(filename);
bw.newLine();
bw.flush();
    
//9\客户端接受来自于服务器的文件的字节流 ,一边读取 一边写到本地
InputStream is=sk.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);

//文件写流,写到硬盘的哪个文件里
FileOutputStream fos=new FileOutputStream("e:\\temp\\b.rar")
BufferedOutputStream bos=new BufferedOutputStream(fos);

byte[] bs=new byte[100];
//int c=0;
while(bis.read(bs)!=-1){
    bos.write(bs);
    bos.flush();
    //c+=100;
    //System.out.println(c);
}

//10\关闭所有
bos.close();
bis.close();
bw.close();
System.out.println("下载完毕");

//界面版聊天

        try {
                sk = new Socket(InetAddress.getByName(ip), Integer.parseInt(port));
                //专门开辟一个线程用来接收数据
                new Thread(){
                    @Override
                    public void run() {
                        try {
                            while(true){
                                InputStream is = sk.getInputStream();
                                InputStreamReader isr = new InputStreamReader(is);
                                BufferedReader br = new BufferedReader(isr);
                                String str = br.readLine();
                                jta.append("服务器:"+str+"\n");
                            }
                        } catch (Exception e2) {
                            // TODO: handle exception
                            e2.printStackTrace();
                        }
                        
                    }
                }.start();
            } catch (Exception e2) {
                // TODO: handle exception
                e2.printStackTrace();
            }

一、文件的下载
文件的下载是指客户端从服务器端下载一个文件到客户端;
比如LOL的客户端,是要去LOL的官方服务器上把客户端的安装包下载到本地后再安装。

-------------【总思路】--------------
/**
* 1.启动服务器并且等待客户端上线
* 2.客户端连接服务器
* 3.客户端告知服务器要下载的文件名
* 4.服务器接收文件名并在本地找到对应文件
* 5.服务器将该文件从硬盘读到内存中,再写入网络中
* 6.客户端从网络上下载该文件,并保存到本地
* 7.关闭连接
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值