B站黑马Java基础+就业班+各种项目idea版本(正在更新)3 网络 流

该篇博客详细讲解了Java中的TCP通信,包括客户端和服务器端的实现,以及文件上传服务器的实例。进一步探讨了服务器端的改进,介绍了创建流的两种方式,并强调了使用流时的注意事项。此外,还深入讨论了Java流的转换、综合运用,以及方法引用,特别是数组构造器引用的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

P402 TCP通信客户端
在这里插入图片描述
p 403 TCP 的服务器端
在这里插入图片描述

P 404文件上传服务器的实例
在这里插入图片描述
P405-407
在这里插入图片描述

package demo07.Net;
//p405
import java.io.*;
import java.net.Socket;
/*
* 读取本地文件,上传到服务器,读服务器回写的数据
* 数据源:H:\\1\\1.jpg
* 目的地:服务器
* */
public class TCPClinet {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("H:\\1\\1.jpg");//创建本地字节输入流
        Socket socket = new  Socket("192.168.1.101", 8805);//
        OutputStream sos = socket.getOutputStream();//创建网络字节输出流
        int len=0;
        byte[] bytes=new byte[1024];
        while ((len=fis.read(bytes))!=-1){//本地读,网络写
            sos.write(bytes,0,len);
        }

        socket.shutdownOutput();

        InputStream sis = socket.getInputStream();//创建网络字节输入流
        while ((len=sis.read(bytes))!=-1){//网络读,打印
            System.out.println(new String(bytes,0,len));
        }
        fis.close();
        socket.close();
    }
}

package demo07.Net;
//p405
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8805);
        Socket socket=server.accept();
        InputStream sis = socket.getInputStream();
        File file=new File("H:\\3");
        if (!file.exists()){
            file.mkdir();
        }
        FileOutputStream fos = new FileOutputStream(file + "\\1.jpg");
        int len=0;
        byte[] bytes=new byte[1024];
        while ((len=sis.read(bytes))!=-1){
            fos.write(bytes,0,len);
        }
        socket.getOutputStream().write("成功".getBytes());
        fos.close();
        socket.close();
        server.close();
    }
}

服务器端的改进

package demo07.Net;
//p405
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8805);
        while (true){
            Socket socket=server.accept();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try{
                        InputStream sis = socket.getInputStream();
                        File file=new File("H:\\3");
                        if (!file.exists()){
                            file.mkdir();
                        }
                        String fileName="itcast"+System.currentTimeMillis()+new Random().nextInt(9999)+".jpg";
                        FileOutputStream fos = new FileOutputStream(file + "\\"+fileName);
                        int len=0;
                        byte[] bytes=new byte[1024];
                        while ((len=sis.read(bytes))!=-1){
                            fos.write(bytes,0,len);
                        }
                        socket.getOutputStream().write("成功".getBytes());
                        fos.close();
                        socket.close();
                    }catch (Exception e){
                        System.out.println(e);
                    }
                }
            }).start();

        }
//        server.close();
    }
}

P432 创建流的2种方式
在这里插入图片描述
P435使用流要注意
在这里插入图片描述
P436 map方法的使用:转换流的元素类型
在这里插入图片描述
P442 流的综合使用案例
在这里插入图片描述
P449 方法引用——数组的构造器引用
其中 ArrayBuider为 函数式接口@FunctionInterface,且其中仅含有builderArray(int length)抽象方法。别的方法调用时候会将该接口对象作为参数。并通过该接口对象调用其中的方法。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值