19、java——网络编程

 网络编程

1、loc

网页编程 : 上层的应用

(1)网络编程 : 底层,关注数据如何传输,如何存储

①节点 : 网络电子设备

②节点与节点之间组成网络

a.IP : 表示节点    b.端口 : 区分不同的软件   c.URL : 互联网中资源的指针,统一资源定位符  d.协议 : 合同,标准,规范

③传输层协议 :

UDP : 相当于写信  只管写只管发  效率高   不安全  大小存在限制

TCP : 相当于打电话  面向连接  安全性高  效率低   大小没有限制 

④IP :定义网络中的节点 (网络电子设备,手机,电脑,路由器...)

        a.分为 : IPV4(4个字节,32位)  IPV6 (128位)

        b.特殊IP:

            192.168.0.0~192.168.255.255  非注册IP,供组织内部使用

            127.0.0.1 本地IP

            localhost : 本地域名

            域名与IP之间的关系:  DNS解析器

⑤java.net包,InetAddress  类表示Internet协议(IP)地址

    (2)IP : 定位节点

    ①端口 : 区分软件,端口号 2个字节  0~65535,同一协议下端口号不能冲突,建议使用8000以上的,8000以下称为预留端口好

②常见的端口:

        80 : http

        8080 : tomcat

        1521 : Oracle

        3306 : Mysql

③InetSocketAddress 此类实现IP套接字地址(IP地址+端口号)它也可以是一对(主机名+端口)

(3)URL

同一资源定位符,指向万维网上的“资源”的指针。

①组成:

        a.协议: http,b.域名: www.baidu.com,c.端口号: 80,d.资源: index.html,e.提交数据: name=zhangsan&pwd=123 f.锚点: #a

互联网 的三大基石:

        a.html,b.http,c.url

URL 类

(4)网络爬虫

2、udp

(1)套接字:传输层为应用层开辟的小口子,不同协议下Socket实现不同,UDP与TCP协议对Socket实现

①UDP : 相当于写信|有包裹|发短信  非面向连接   协议简单,开销小,效率高   不安全    大小由限制(一般不超过60k)

②TCP : 相当于打电话       面向连接    效率低  安全      大小没有限制

③基于三次握手,UDP协议下发送端与接收端两端平等DatagramSocket  此类表示用于发送和接收数据报包的套接字。

④DatagramSocket(int port) 构造一个数据报套接字并将其绑定到本地主机上的指定端口。A.void receive(DatagramPacket p) 从此套接字接收数据报包。B.void send(DatagramPacket p) 从此套接字发送数据报包。

⑤DatagramPacket 该类表示数据报包。byte[] getData() 返回数据缓冲区。int getLength() 返回要发送的数据的长度或接收的数据的长度。数据的传输基于字节数组

⑥UDP实现发送端: 基本流程

        a.定义我是发送端

        b.准备数据

        c.打包

        d.发送

        e.关闭

(2)①UDP实现接收端: 基本流程

        a.定义我是接收端

        b.准备字节数组,打包

        c.接收数据

        d.处理数据

        e.关闭

②注意;  统一协议下端口号不能冲突

3、tcp

(1)客户端  Socket

①Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号。

a.InputStream getInputStream()

b.OutputStream getOutputStream()

②服务器  ServerSocket 该类实现服务器套接字。

a.ServerSocket(int port) 创建绑定到指定端口的服务器套接字。

b.Socket accept() 侦听对此套接字的连接并接受它。

③tcp协议下传输数据基于IO流,tcp协议实现基本流程 : 客户端

a.定义我是客户端-->指定要请求的服务器的IP+端口

b.准备数据,c.获取输出流,d.输出-->IO操作,e.刷出,f.关闭

(2)tcp协议实现基本流程 : 服务端

①定义我是服务端

②阻塞式监听

③获取输入流-->接收客户端的请求数据

④处理数据

⑤关闭

(3)tcp 单向登录: 客户端

①定义客户端

②准备数据(用户输入)

a.输入流

b.用户名与密码

③获取输出流向服务器端发送数据(用户名与密码)

④刷出

⑤关闭

(4)tcp 单向登录: 服务端

①定义我是服务器

②阻塞式监听

③获取输入流接收客户端发动的数据

④处理数据

⑤关闭

要求: 服务器端接收到用户输入的用户名与密码,与指定的laopei,1234比较是否相等,相等本地输出登录成功,不相等输出用户名或密码错误!!!

(5)tcp 双向登录: 客户端

①定义客户端

②准备数据(用户输入)

a.输入流

b.用户名与密码

③获取输出流向服务器端发送数据(用户名与密码)

④刷出

⑤获取输入流 从服务器端读取响应

⑥关闭

(6)tcp双向登录: 服务端

①定义我是服务器

②阻塞式监听

③获取输入流接收客户端发动的数据

④处理数据

⑤获取输出流 把结果响应 给客户端

⑥刷出

⑦关闭

要求: 服务器端接收到用户输入的用户名与密码,与指定的laopei,1234比较是否相等,相等本地输出登录成功,不相等输出用户名或密码错误!!!

(7)多用户登录服务器端

​通过循环可以实现多用户登录,但是服务器只能排队对不同的客户端做响应

​(8)多用户登录客户端,通过多线程实现

 


posted @ 2021-07-26 16:45  孤影_空白  阅读(55)  评论(0编辑  收藏  举报