[Java] Java自学笔记(十一)——网络编程

*网络编程
    ·在一定的协议下,实现两台计算机的通信的程序
    ·软件结构
        ·C/S    客户端服务器
        ·B/S    浏览器服务器
*网络通信协议
    ·TCP/IP
        ·定义了计算机如何接入因特网以及数据如何在他们之间传输的标准
        ·应用层:HTTP...
        ·传输层:TCP UDP
        ·网络层:IP...
        ·数据链路层+物理层
    ·UDP
        ·用户数据报协议(User Datagram Protocol)
        ·无连接协议
        ·特点:
            ·耗费资源小,效率高
            ·偶尔会丢失数据包,对结果影响不大
            ·无法保证数据的完整性
    ·TCP
        ·传输控制协议(Transmission Control Protocol)
        ·面向连接的通信协议
        ·无差错数据传输
        ·客户端向服务端发出连接请求实现三次握手
            ·第一次
                ·客户端发送连接请求,等待服务器确认
            ·第二次
                ·服务器回一个响应,通知客户端收到连接请求
            ·第三次
                ·客户端再次向服务器发送确认信息,确认连接
*网络编程三要素
    ·协议
    ·IP地址
        ·IPv4
            ·4字节32位二进制数
        ·IPv6
            ·16字节128位二进制数
    ·端口号
        ·逻辑地址
        ·使用网络软件,当软件一打开,操作系统就会为网络软件分配一个随机的端口号,也可以指定端口号
        ·端口号由两个直接组成,取值范围0-65535
            ·1024前的端口号,已经被系统分配
            ·网络软件端口号不能重复
            ·常用端口
                ·网络端口    80
                ·数据口        MySQL:3306        oracle:1521
                ·Tomcat        8080
*TCP通信程序
    ·客户端与服务器连接步骤
        ·服务器预先启动,等待客户端连接
        ·客户端成功连接服务器,连接成功才能通信,客户端不主动连接
    ·TCP通信的步骤
        ·服务器端启动
            不会主动请求
        ·客户端请求服务器端
            建立逻辑连接,包含了一个字节流IO对象
        ·通过4个IO流对象进行连接
            ·客户端类:    Socket类
                1.客户端给服务器端发送数据
                    OutputStream
                4.客户端读取服务器发送的数据
                    InputStream
            ·服务器端:    ServerSocket类
                2.读取客户端发送的数据
                    InputStream
                3.客户端给服务器发数据
                    OutputStream
    ·注意:
        ·多个客户端同时和服务器进行交互时,服务器必须明确和哪个客户端进行的交互
            ·在服务器端有一个accept()方法
        ·多个客户端和服务器进行交互,需要多个IO流对象
            ·服务器没有IO流,使用客户端的发送流进行回写数据
*Socket
    ·客户端常用构造方法
        ·Socket(String host, int port)    
            ·host:服务器IP地址
            ·port:端口号
        ·OutputStream()返回输出流
        ·InputStream()返回输入流
        ·close()关闭套接字
    ·实现步骤
        ·创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
        ·使用SOCket对象中的方法,getOutputSteam()获取网络字节输出流OutputSteam对象
        ·使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据
        ·使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
        ·使用网络直接输入流InputStream对象的方法read,读取服务器回写的数据流
        ·释放资源(Socket)
    ·注意:
        ·客户端和服务器端进行交互,必须使用Socket中提供的网络流,不能使用自己创建的流对象
        ·当创建客户端对象Socket时,就回去请求服务器和服务器经过3吃握手建立连接通路
            ·如果服务器没有启动就会抛出异常
            ·如果服务器已经启动就可以进行交互
    ·服务器常用构造方法
        ·ServerSocket(int port)创建绑定到特定端口的服务器套接字
        ·accept()监听并接受到此套字的连接
    ·实现步骤
        ·创建服务器ServerSocket对象的系统指定的端口号
        ·使用SercerScoket对象中的方法accept,获取到请求的客户端Scoket
        ·使用Socke对象中的构造方法getInputStream()获取网络字节输入流InputStream
        ·使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据
        ·使用Socket对象中的getOutputStream()获取网络字节输出流OutputStream
        ·使用网络字节输出流OutputStream对象中的方法write给客户端回写数据
        ·释放资源(Socket,ServerSocket)
    

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值