黑马程序员技术交流社区

标题: 【day11】-网络编程 [打印本页]

作者: tianhaolin    时间: 2018-12-2 10:37
标题: 【day11】-网络编程
第一章 网络编程入门
1.软件结构
1)C/S结构:全称为Client/Server结构,是指客户端和服务器结构
2)B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构

2.网络通信协议
1)网络通信协议:
    位于同一个网络中的计算机在进行连接和通信时需要遵守的通信规则
    它对数据的传输格式、传输速率、传输步骤等做了统一的规定;
2)TCP/IP协议:
    传输控制协议/因特网互联协议
3)网络通信协议的分类
    *UDP协议:用户数据报协议(User Datagram Protocal)
           UDP协议是无连接通信协议,在数据传输时,数据的发送端和接收端不建立逻辑联机
           UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输
           UDP协议不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议
           UDP协议的传输:
                         主机1---------数据--------->主机2
                                 主机2<--------数据----------主机1
           UDP协议数据被限制在64kb以内,超出这个范围就不能发送了
    *TCP协议:传输控制协议(Transmission Control Protocal)
           TCP协议是面向连接的通信协议,传输数据之前在发送端和接收端建立逻辑连接,然后再传输数据
           TCP协议提供了两台计算机之间无差错的数据传输,一般用于下载、网页浏览等
           TCP协议保证数据安全的特性,
           TCP传输数据需要三次握手
                        客户端---------向服务器发送连接请求--------->服务器
                        客户端<----------向客户端发送响应------------服务器
                        客户端--------再次向服务器发送确认信息------>服务器


3.网络编程三要素
  1)协议
  2)IP地址:指互联网协议地址(Internet Protocal Address)
     IP地址是用来给一个网络中的计算机设备做的唯一编号
         *IPv4:是一个32位的二进制数(4字节),通常被分为4个字节,表示为a.b.c.d如192.168.1.1
         *IPv6:是一个128为的二进制数(16字节),解决网络地址资源数量不够的问题
         *特殊的ip地址:
            127.0.0.1代表本机的IP地址
                localhost代表本机的IP地址
         *控制台常用命令:IP config--查看本机的IP地址
                         ping IP -- 看本机与其他IP的计算机是否可以通信  
  3)端口号:是一个逻辑端口
     *当我们使用网络软件,那么操作系统就会为这个网络软件分配一个随机的端口号
          或者网络软件在打开的时候向系统要指定的端口号
         *端口号是由两个字节组成,取值范围在0-65535之间
          注意:1024之前的端口号我们不能使用,已经被系统分配给已知网络软件了
               网络软件的端口号不能重复
         *假设对方的IP为192.168.1.200,QQ的端口号为5000
          那么我们使用IP:端口号,就可以保证数据准确无误的发送到对方计算机的指定软件上了
          192.168.1.200:5000
         *常见端口号
          **百度服务器:80
          **数据库 mysql:3306 oracle:1521
          **Tomcat服务器:8080

第二章 TCP通信程序
1.概述
   1)TCP通信能实现两台计算机之间的数据交互,通信的两端要严格区分为客户端(Client)与服务器(Server结构)
   2)两端通信的步骤:
     -服务端程序,需要事先启动,等待客户连接
     -客户端主动连接服务器端,连接成功才能通信,服务器不会主动连接Client
     -客户端与服务器建立的连接包含字节IO流对象,C/S使用这个IO对象进行通信
   3)服务器和客户端的交互
     实际上客户端是没有IO流对象的,表示服务器是一个ServerSocket类,客户端是Socket类
         而是使用每个客户端对象Socket中提供的IO流和客户端进行交互
         服务器使用客户端的字节输入流读取客户端发送的数据
         服务器使用客户端的字节输出流给客户端回写数据


2.Socket类:该类实现客户端套接字(IP:port),套接字是两台设备之间通讯的端点
   1)构造方法:
     Socket(String host,int port)
            host:服务器主机名称/IP地址,如果host是null,则相当于指定地址为回送地址(127.)
                port:端口号
   2)成员方法
     OutputStream getOutputStream() 返回此套接字的输出流
         InputStream getInputStream() 返回此套接字的输入流
         void close()关闭此套接字
   3)实现步骤
     -创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
         -使用Soket对象中的方法getOutputStream()获取网络字节数据流OutputStream对象
         -使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据
         -使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
         -使用网络字节输入流InputStream对象中的方法read,读取服务器回写的数据
         -释放资源(Socket)
   4)注意:
     -客户端和服务器进行交互,必须使用Socket中提供的网络流
         -当我们创建客户端对象Socket的时候,就回去请求服务器和服务器经过3次握手连接通路
           这时如果服务器没有启动,那么就会抛出异常
           如果服务器已启动,那么就可以进行交互了


3.ServerSocket类:该类表示服务器套接字
   1)构造方法
     ServerSocket(int port) 创建绑定到特定端口的服务器套接字
   2)成员方法
     Socket accept() 侦听并接受此套接字的连接
   3)服务器实现步骤
     -创建服务器ServerSocket对象和系统指定的端口号
         -使用ServerSocket对象中的方法accept,获取到客户端的流
         -使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
         -使用网络字节输入流InputStream对象中的方法read,读取客户端输入的数据
         -使用Soket对象中的方法getOutputStream()获取网络字节数据流OutputStream对象
         -使用网络字节输出流OutputStream对象中的方法write,给客户端回写数据
         -释放资源









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2