java学习第三十一天内容

本文详细对比了UDP和TCP协议的区别,包括可靠性、连接建立、数据大小限制等方面,并提供了UDP协议的发送与接收实现步骤。同时,介绍了TCP协议在客户端和服务器端的数据发送与接收流程,以及如何通过`shutdownOutput()`方法通知服务端数据传输结束。
摘要由CSDN通过智能技术生成

1.前一天重点内容复习

        UDP协议和TCP协议区别:

                 是否是一种可靠连接
                    UDP协议:不可靠,执行效率高
                    TCP协议:可靠,执行效率低
                 是否需要建立连接通道

                     UDP协议:不需要
                     TCP协议:需要

                 是否发送的数据大小有限制
                     UDP协议:有限制,以一种 "数据报包-->DatagramPacket"的方式传输
                     TCP协议:没有限制,连接通道里面,使用字节流的方式来进行通信(数据写,读)
                            客户端通过获取通道的字节输出流来写数据
                            服务端通过获取通道的字节输入流来读数据

        字符缓冲流读写复制特有方式代码体现

public static void main(String[] args)  throws Exception{
        BufferedReader br = new BufferedReader(new FileReader("br.txt")) ;
        BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt")) ;

        String line = null ;
        while((line=br.readLine())!=null){
            bw.write(line) ;
            bw.newLine();
            bw.flush();
        }

        bw.close();
        br.close();

    }

        UDP协议发送端实现步骤 

                 创建发送端的Socket对象
                 创建一个"数据报包"对象

                        public DatagramPacket(byte[] buf(发送端数据),int length (发送的长度),InetAddress address( ip地址对象),int port(端口号))
                 使用UDP发送端的Socket对发送"数据报包"
                 释放资源

        UDP协议接受端实现步骤 

                创建接收端的Socket对象
                创建一个自定义缓冲字节数组作为数据报包的参数 ,创建接受端的数据报包
                使用接受端的数据报包去接受发送端的数据
                通过getData()、getLength()、getAddress解析真实数据(数据报包)
                展示数据
                释放资源

2.TCP协议实现发送和接受

        客户端实现发送

                创建客户端socket对象

                        public Socket(String host , int port) throws UnKnownHostException,IOException:创建流套接字并将其连接到指定ip地址的指定端口号

                获取客户端Socket对象通道内的字节输出流对象

                        public OutputStream getOutputStream() throws IOException

                将数据写入字节输出流中

                释放资源

        服务器端实现接受

                创建服务端的Socket对象

                        public ServerSocket(int port) throws IOException:创建绑定到指定端口的服务器套接字

                监听客户端连接通道

                        public Socket accept() throws IOException:

                获取通道内字节输入流

                        public InputStream getInputStream() throws IOException

                读取通道内字节输入流的数据

                        public InetAddress getInetAddress():获取套接字所连接的地址

                        public String getHostAddress():将地址转为字符串形式

                展示数据

                释放资源

3.TCP建立连接通道,客户端如何告诉服务端没有数据再传输了

        public void shutdownOutput() throws IOException:告诉服务端,没有更多数据写过去,数据传入完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值