JavaSE进阶-网络编程


    网络编程-相关概念                       【了解】
    网络编程-基于UDP协议                    【重点】
    网络编程-基于TCP协议                    【重点】

网络编程-相关概念
    什么是网络编程
        也可以称为Socket编程
        在同一网络下,在通信协议的作用下,编写的程序可以实现不同的计算机之间的进行数据传输。
    网络编程的三要素    【重点】
        IP
            设备在网络中唯一标识
            分类:
                IPV4
                    4个字节组成(总共32个二进制位),为了方便书写和记忆,使用“点分十进制法”进行表示
                    使用点分成4段,每一段占1个字节,每一段转成十进制最大为值255

                    特殊的IP:
                        255.255.255.255         广播ip地址
                        127.0.0.1/localhost     本机地址

                IPV6
                    16个字节组成(总共128个二进制位),为了方便书写和记忆,使用“冒分十六进制法”进行表示
                    使用冒号分成8段,每一段占2个字节

            ip相关的dos命令
                ipconfig            查看ip地址
                ping ip地址          检查是否和指定的ip连通

            InetAddress类
                用于封装ip地址的

                常用方法:
                     static InetAddress getByName(String host)
                        * String host
                            可以传递主机名也可以传递ip地址,我们今天主要是传递ip地址
                     String getHostAddress():获取ip
                     String getHostName():获取主机名

        端口号
            应用程序(软件)在设备中的唯一标识

            范围:0~65535
            0~1024建议不使用,给操作系统、知名服务等预留的端口号

            常见的端口号:
                8080        tomcat服务的默认端口号
                80          Http协议的默认端口号
                3306        MySQL的默认端口号
                ...

        协议
            定义数据传输的规则

            UDP:面向无连接,速度稍快,数据不安全易丢失,发送的数据大小有限制(64K)
            TCP:面向连接,速度稍慢,数据安全不会丢失,发送的数据没有大小限制


网络编程-基于UDP协议

    发送端
        1、创建DatagramSocket对象
        2、创建DatagramPacket对象
        3、发送
        4、释放资源

    接收端
        1、创建DatagramSocket对象
        2、创建一个空包裹用于装发送过来的数据
        3、接收
        4、处理数据
        5、释放资源

    DatagramSocket类
        构造方法
            DatagramSocket() :默认分配端口号
            DatagramSocket(int port)
        成员方法
             void send(DatagramPacket p)
             void receive(DatagramPacket p)

    DatagramPacket类
        构造方法
            DatagramPacket(byte[] buf, int length, InetAddress address, int port)
            * 参数
                byte[] buf:发送的数据
                int length:发送的数据长度
                InetAddress address:接收端的ip地址
                int port:接收端的端口号
            DatagramPacket(byte[] buf, int length)
        成员方法
             byte[] getData():获取包裹中的数据,将包裹对象中的数组返回
              int getLength():获取接收到数组中的有效字节个数
              InetAddress getAddress():获取发送端的ip
              int getPort():获取发送端的端口号

    三种通信方式
        单播
        组播
            组播地址范围:
                224.0.0.0 ~ 239.255.255.255
                224.0.0.0 ~ 224.0.0.255是预留的组播地址不建议使用

                224.0.1.0 ~ 239.255.255.255可用
        广播
            发送端和接收端的代码和单播方式一模一样
            只是发送端发送的时候,指定的ip改为255.255.255.255

网络编程-基于TCP协议
    客户端
        步骤:
            1、创建客户端对象
            2、获取输出流
            3、通过流写出数据
            4、释放资源
    服务器端
        步骤:
            1、创建服务器端对象
            2、接收客户端的连接
            3、获取输入流
            4、通过流读取数据
            5、释放资源
        通过IO流来进行数据的传输

    Socket类
        客户端套接字

        构造方法
              Socket(String host, int port)
              Socket(InetAddress address, int port)
                * 参数
                    String host / InetAddress address表示的都是服务器端的ip
                    int port表示的是服务器端的端口号
        成员方法
             InputStream getInputStream()  :获取输入流对象
             OutputStream getOutputStream()  :获取输出流对象
                在客户端获取的输入流可以读取服务器端发送的数据
                在客户端获取的输出流可以向服务器端发送数据

    ServerSocket类
        服务器端套接字

        构造方法
            ServerSocket(int port)

        成员方法
             Socket accept()
                * InputStream getInputStream()  :获取输入流对象
                * OutputStream getOutputStream()  :获取输出流对象
                在服务器端获取的输入流可以读取客户器端发送的数据
                在服务器端获取的输出流可以向客户器端发送数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值