计算机网络
所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使计算机之间可以相互传递信息,共享数据,软件等资源。
按地理位置分为:
局域网
城域网
广域网,最大的是Internet
网络编程
所谓网络编程,指的就是在同一个网络中不同机器之间的通信
计算机之间通信需要的条件
IP地址
IP地址指的是互联网地址(Internet Protocol Address),是联网设备与互联网之间的唯一标识,在同一个网段中,IP地址是唯一的
IP地址是数字型的,是一个32位的二进制,通常将其分为4个8位的二进制数,每8位之间用圆点隔开,每个8位整数可以转换成为一个0~255的十进制整数,例如:202.9.128.88
分为IPV4和IPV6
查看IP地址的命令:ipconfig
IP地址分类
A类:保留给政府机构,1.0.0.1~126.255.255.254
B类:分配给中型企业,128.0.0.1~191.255.255.254
C类:分配给任何需要的个人。192.0.0.1~223.255.255.24
D类:用于组播,224.0.0.1~239.255.255.254
E类:用于实验,240.0.0.1~255.255.254
回收地址:127.0.0.1,指本地机,一般用于测试使用
IP地址可以唯一的确定网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口
端口
数据的发送和接受都需要通过端口出入计算机,端口号用于唯一标识通信实体上进行网络通讯的程序,同一台机器上不能两个程序占用同一个端口
端口号的取值范围:0~65535
端口分类:
公认端口:0~1023
注册端口:1025~49151
动态或私有端口:1024~65535
常用端口:
mysql:3306
oracle:1521
tomcat:8080
浏览器:80
通信协议
需要通信的设备之间需要实现相同的通信协议
网络分层:物理层,数据链路器,网络层,传输层,会话层,表示层,应用层
通信协议分类:
传输层协议:TCP和UDP
网络层IP协议:IPV4和IPV6,互联网协议
应用层协议:HTTP
TCP/IP、UDP概念
TCP
Transfer Control Protocal传输控制协议
IP
Internet Protocal 网际协议
TCP/IP特点:保持长连接,数据传输比较稳定可靠
TCP连接机制:三次握手机制
断开机制:四次挥手机制
UDP数据报协议
类似广播、短信,特点:快速,不可靠
应用场景:聊天等实时性不强的程序
socket网络连接
基于TCP/IP协议、实现长连接,可靠
应用场景:
网络游戏、视频、语言通信、文件的上传下载等等
Java中的Socket(套接字)
实现点对点的通信
服务器端
ServerSocket 用于等待和获得客户端连接
创建:
ServerSocket(int port)
port是端口号,一旦创建ServerSocket后,就会对该端口进行侦听
常用方法:
Socket accept() 接收连接的客户端
执行该方法时,如果当前没有客户端连接,就回阻塞线程,直到有客户端连接。返回值Ssocket就是连 接上来的客户端
void close()
客户端
Socket 用于连接服务器端
创建:
Socket(String ip,int port)
ip就是服务器端的IP地址,port就是服务器端侦听的端口.
一旦创建了Socket对象,就建立和服务器端的连接
常用方法:
InputStream getInputStream()
获得输入流,实现数据的读取
OutputStream getOutputStream()
获得输出流,实现数据的发送
void close()
注意:Socket的IO流关闭后,Socket连接会自动关闭
客户端连接服务器端后,给服务器端发消息
服务器端:
1)创建ServerSocket对象,指定端口
2)执行ServerSocket的accept方法获得客户端连接
3)通过accept获得客户端Socket后,调用Socket的getInputStream()方法获得输入流
4)从输入流读取时数据,显示出来
客户端:
1)创建Socket对象,指定服务器ip和端口
2)获得Socket对象的输出流,getOutputStream
3)通过输出流发送数据
HTTP(Hyper Text Transfer Protocal超文本传输协议)
属于应用层协议,,基于TCP/IP协议
规定传输的双方,发送文本和接受文本的格式
应用于:浏览器上网
服务器和客户端之间交互
请求方法 :
GET 参数和URL一起发送,不安全,URL长度有限
POST 参数单独发送,安全,数据长度没有限制
PUT 添加
DELETE 删除
TRACE 跟踪
OPTIONS 获得配置参数
HEAD 发送请求头响应
响应代码:
200 ok
404 资源不可访问
403 没有权限
405 请求方法没有实现
500 服务器内部错误
HTTP的特点:
1)简单、快去
2)五连接,不能保持长连接
比如:打开百度,输入百度地址,会访问百度的服务器,服务器把百度的HTML代码发给浏览器,发送完后浏览器和服务 器断开。
3)无状态,服务器不会保留客户端(浏览器)的状态(数据)
Java的HTTP连接
URL 代表网络资源的地址
创建方法:
new URL(String urlStr)
urlStr就是网址
方法:
URLConnection openConnection()打开连接
HttpURLConnection 网络连接
方法:
nputStream getInputStream() 获得输入流
OutputStream getOutputStream() 获得输出流
setConnectionTimeout(long timeout) 设置连接超时
setRequestMethod(String method) 设置请求方法
int getResponseCode() 获得相应代码
setDoOutput(boolean b) 设置是否可以发生数据
disconnect() 关闭
作业:
1、实现一个查询系统, 创建商品表,定义编号,名称,价格,产地等字段,在表中插入一些数据 系统分为客户端和服务器端,客户端输入商品名称的关键字,发送给服务器端,服务器端查询和关键字有关的商品,将商品信息发送给客户端,客户端要显示查询到的商品。
0)定义商品类
1)建库建表,插数据
2)客户端向服务器端发送一条数据,打印
3)服务端用该数据作为关键字,对数据库进行模糊查询,获得List集合,打印
4)使用Gson将List集合转换为字符串,发送给客户端
5)客户端连接服务器,发送数据后,读取字符串
6)将字符串转换为List集合,打印