网络编程 Socket 套接字 Udp Tcp

1.网络编程概述
    计算机网络:
        是指将地理位置不同的 具有独立功能的多台计算机以及外部设备 通过通信线路连接起来
        实现 资源共享 和 信息传输
    网络编程:
        就是用来实现互联网的不同计算机上运行的应用程序间数据的交换
    网络编程三要素:
        IP地址 端口号 传输协议

        IP地址:
            每个设备在网络中的唯一标识
            ipconfig 命令 可以查看本机的ip地址
            ping 命令 测试连接
            IPV4 4个字节组成 0~255之间
            IPV6 每组4个16进制数
        两个特殊的ip地址:
            127.0.0.1 本地回路地址 就是代表本机 ---> localhost
            255.255.255.255 广播地址
        端口号:
            给不同的网络程序都设置了一个不同的标识 这个标识就是端口号
            端口 是逻辑端口 不是网线的逻辑端口
            端口号 由0-65535数字组成 任选
            0~1024一般被系统保留 不建议使用
            常见顿口:
                mysql数据库   3306
                oracle数据库  1521
                web          80
                tomcat服务器  8080
                qq          4000
                飞秋          2425
            端口号是可以修改的

            http://localhost:8080/项目名/应用java
        传输协议:
            传输协议是定义的通信规则
            国际组织定义了一个通用的网络通信协议 TCP/IP(包括局域网/广域网)
            联网的终端设备 为了更好的进行信息交互
            要遵守这一规则
        数据传输:
            首先会从客户端的应用层开始 将数据一层一层向下打包
            (包里面包括你要传输的数据 你的ip地址 端口号 接收方的ip 端口号)
            然后 发送到服务器 服务器接收到数据包后 再一层层向上拆包
2.Socket套接字
    网络编程 其实就是Socket编程
    Socket套接字
        网络上具有唯一标识的ip地址和端口号的组合
        用来唯一标识某个应用程序

        通信的两端 必须都有Socket -->码头
        网络通信 就是Socket间的通信
        数据在两个Socket之间 通过IO流进行传输

        例如 我的电脑安装了 qq  你的没装 就不能用qq通信
3.InetAddress类
    ip地址类
        String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 
        static InetAddress getByName(String host)  在给定主机名的情况下确定主机的 IP 地址。 
        static InetAddress getLocalHost() 返回本地主机。 
4.UDP概念和案例
    概念:
        UDP 用户数据报协议
        特点:
            面向无连接
            数据不安全
            速度快
            不区分客户端和服务端
            发送的数据大小有限制 一次不能超过64k
        例如:
            对讲机
            快递包裹 封包 --> 地址 --> 如果地址不存在 --> 包裹就丢失了
    java.net 包下的类
        DatagramSocket此类表示用来发送和接收 数据报包 的套接字
        构造方法
        DatagramSocket() 表示创建一个默认的套接字 并绑定到本地地址和一个随机端口号
        DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
        常用方法
             void send(DatagramPacket p) 从此套接字发送数据报包。 
             void receive(DatagramPacket p) 从此套接字接收数据报包。 

        DatagramPacket 此类表示数据报包。
        构造方法
        DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
            构造数据报包,用来将长度为 length 的包 发送 到指定主机上的指定端口号。
            从buf数组中 取出length长的数据 创建数据包对象 目标是 address地址上的port端口上
        DatagramPacket(byte[] buf, int length) 
            构造 DatagramPacket,用来 接收 长度为 length 的数据包
            将数据包中的length长的数据 装进buf数组中
        常用方法:
            byte[] getData() 获取数据
            int getLength() 获取数据的长度
            InetAddress getAddress() 获取ip地址
            int getPort() 获取端口号

5.TCP概念和案例
    概念:
        TCP传输控制协议
    特点:
        面向连接(三次握手)
        数据安全
        速度略慢
        分为客户端和服务端

        面向连接
            打电话
                客户端向服务端发起请求
                服务端响应请求
                客户端向服务端发送数据
    客户端
        java.net
        Socket
            此类实现客户端套接字
        Socket(String host, int port) 
            创建一个流套接字并将其连接到指定主机上的指定端口号。(也可以就叫“套接字”)。套接字是两台机器间通信的端点。

            InputStream getInputStream() 返回此套接字的输入流。 
            OutputStream getOutputStream() 返回此套接字的输出流。
            InetAddress getInetAddress() 返回套接字连接的地址。 
            void shutdownInput() 此套接字的输入流置于“流的末尾”。 
            void shutdownOutput() 禁用此套接字的输出流。 

    服务端
        ServerScoket
            此类实现服务器套接字。服务器套接字等待请求通过网络传入。
            它基于该请求执行某些操作,然后可能向请求者返回结果。 
            Socket accept() 
                侦听并接受到此套接字的连接。

猜你喜欢

转载自blog.csdn.net/weixin_42738506/article/details/81511011