网络编程 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() 
                侦听并接受到此套接字的连接。

主要用于将中文字符串转换为可传输的字符串   static String encode(String s, String enc) 用于将中文字符串转换为可传输的字符串,并指定字符集。编码   static String decode(String s, String enc)   用于将编码后的字符串转换为中文字符串,并指定编码时的字符集。解码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值