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实现发送端: 基本流程
b.准备数据
c.打包
d.发送
e.关闭
(2)①UDP实现接收端: 基本流程
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)多用户登录服务器端