Java-网络编程

本文介绍了TCP和UDP在网络通信中的区别,包括TCP的可靠性、三次握手和四次挥手过程,以及UDP的高效但不可靠的特性。同时,讲解了网络分层模型、IP地址、端口号的作用,以及URL在资源定位中的功能。此外,还涉及到Java中的网络编程,如Socket和DNS解析。
摘要由CSDN通过智能技术生成

今天任务
  常规:05–06 (必会)
  难点:07–10 (练习)
  (无重点)

问题:
  1.TCP,UDP的区别和联系(必会)
  2.网络分层模型(了解)
  3.三次握手和四次挥手(扩展)
  4.基于TCP,UDP的编写流程(熟练掌握)
技术对比

网页编程:关注上层应用
网络编程:关注底层数据的传输

节点表示每一台网络设备,ip表示节点

Ip地址:定位网络中的节点…(电脑,手机…)

192.168.20.26
192.168 局域网内部的开头
20网关
26ip地址

端口号:区分软件

URL:统一资源定位符(互联网中资源的指针)
传输层协议:(标准,合同,规范)
  UDP:邮寄包裹|写信 缺点:不安全,大小限制(一般不超过60k) 优点:协议简单,开销小,效率高
  TCP:打电话 缺点:效率低 优点:基于连接,安全,没有大小限制 (重点)

IP:定位网络中的节点…(电脑,手机…)
  Ipv4 4个字节32位    Ipv6 128位

  特殊的IP:
    192.168.0.0~192.168.255.255 非注册IP(局域网内使用的IP),专门供组织内部使用的IP
    127.0.0.0 本地IP
    localhost:本地(也叫域名) www.baidu.com也是域名

IP与域名:
  DNS解析器:做域名与IP直接解析问题

java.net包(常用类)
  InetAddress:
  InetSocketAddress:
  URL
  

端口:区分软件
  2个字节  0~65535表示端口号
  同一协议下端口号不能冲突
  8000以内为预留端口号,建议自己设置端口号为8000以上
InetSocketAddress :此类实现IP套接字地址(IP地址+端口号)

常见的端口号:
  80:http
  8080:tomcat
  3306:mysql
  1521:oracle

URL:统一资源定位符,互联网中资源的指针
互联网的三大基石:http, html, url

url组成:
  协议:http
  域名:www.baidu.com
  端口:80
  资源:index.html?username=zhangsan&password=1234#a   (3a—>锚点 url.getRef())

http://www.baidu.com:80/index.html/index.html?username=zhangsan&password=1234#a

Socket:套接字
  传输层为应用层开辟的一个小口子
面向Socket编程,不同的传输层协议对Socket的实现不同

UDP协议实现:
  两端平等: 发送端  接收端
  UDP协议下数据传输基于字节数组
  DatagramSocket
  DatagramPacket

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

   DatagramPacket: 该类表示数据报包。

UDP协议下基本流程:发送端
  1.定义我是发送端
  2.准备数据
  3.打包
  4.发送
  5.关闭

UDP协议下基本流程:接收端
  1.定义我是接收端
  2.准备包裹,用来接收数据
  3.接收数据
  4.处理数据
  5.关闭

TCP: 基于连接的,类似打电话,安全,效率低,没有大小限制
  基于3次握手建立连接,几次挥手断开连接
  协议下两端是不平等的,客户端, 服务器端
  tcp协议下数据传输基于IO流

TCP协议下实现基本流程:客户端
  1.定义我是客户端 Socket该类实现客户端套接字(也称为“套接字”),套接字是两台机器之间通信的端点。
  2.准备数据
  3.获取输出流(字节为单位),向服务器发送数据
  4.刷出
  5.关闭

TCP协议下实现基本流程:服务器端
  1.定义我是服务器 ServerSocke该类实现服务器套接字
  2.阻塞式监听 Scoket accept() 侦听对此套接字的连接并接受它
  3.获取输入流,读取客户端发送的数据
  4.处理数据
    校验用户输入的登录信息是否正确(admin 1234)
    1)校验方式
    2)校验方式
  5.关闭

TCP协议下实现单向登录流程:客户端
  1.定义我是客户端
  2.键盘输入接收用户输入的登录信息 username=zhangsan&password=123
  3.获取输出流,向服务器发送数据
  4.刷出
  5.关闭

TCP协议下实现单向登录流程:服务器端
  1.定义我是服务器端
  2.阻塞式监听
  3.获取输入流,读取客户端发送的数据
  4.处理数据
    校验用户输入的登录信息是否正确(admin 1234)
  5.关闭

TCP协议下实现双向登录流程:客户端
  1.定义我是客户端
  2.键盘输入接收用户输入的登录信息 usernamezhangsan&password=123
  3.获取输出流,向服务器发送数据
  4.刷出
  5.获取输入流,读取服务器响应的结果
  6.处理结果
  7.关闭

TCP协议下实现双向登录流程:服务器端
  1.定义我是服务器
  2.阻塞式监听
  3.获取输入流,读取客户端发送的数据
  4.处理数据
    校验用户输入的登录信息是否正确(admin 1234)
  5.获取输出流,将结果响应给客户端
  6.刷出
  7.关闭

TCP协议下实现多用户登录流程:服务器端
服务器端能够实现对多个客户端做响应
重复执行某段代码可以使用循环,但是多个客户端只能排队登录

TCP协议下实现多用户登录流程:服务器端
利用多线程实现,监听到一个客户端就开启一个线程提供服务

回顾:
写出字节数组,可以调用outputstream为我们写出字节数组的方法,
我想用字节流,但是想直接读取字符串,通过转换流转成字符串;字节流的功能流,可以直接读写基本数据类型的类型加数据包含String类型,Data流 Object流
新增功能 write int ;write boolean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值