网络编程
概念
Internet,由在不同的地理位置,不同的计算机主机,互联形成一个计算机系统。
有通讯和数据共享的作用
网络编程:在已经有了完备成熟的网络系统之后,在整个基础之上,使用网络进行编程,对应用层进行设计活动
网络编程三要素
(一)IP地址:
在计算机网络中,每一台计算机的网络中的唯一标志。
分类:
IPV4,使用4个0-255的数字,来表示一个IP地址,32位2^32 40亿
四个字节中,可能有两个字节或者三个字节表示所在的子网;
特殊的本地地址:localhost 127.0.0.1
相关命令:ipconfig ping
IPV6
(二)网络端口
使用两个字节 0-65535 ,最多进程65535;
当程序运行时,需要一个端口号,在城西结束后,端口号被回收;
在网络程序中,需要现在网络中找到IP地址,找到计算机,再找到应用进程对应的端口号;
分配:在程序启动的时候随机分配,也可以指定;
常用的端口号:
1.操作系统:0-1024
MySQL:3306
Tomcat:8080
oracle:1521
QQ:4000
(三)通讯协议
1.用户通信双方在信息交互时,对信息的包装和解析的规则,就称为协议;
2.网络分析:
应用层:http https ftp
传输层:UDP(不可靠) TCP(可靠)
网络层:IP协议
物理层:底层硬件设备和数据的完整和校验
InetAddress 类
1.用于描述IP的对象所属的类型(IP地址)
2.获取方式:
static InetAddress getByName(String host);
getHostName() getAddress()【使用数组的Arrays.toString()】
static InetAddress getByAddress(byte[] address)
static InetAddress getLocalHost():返回本地主机
UDP和TCP
都是传输层的协议,都是端到端的协议;
UDP:面向无连接,不安全,但效率高,只区分发送端和接收端,而不区分客户端和服务端;
TCP:面向连接,需要三次握手确认,效率低,安全性高,区分客户端和用户端;
B/S:运算主要在服务上,浏览器只是展示显示,服务器压力很大,维护成本较低
C/S:两端都在进行运算,减轻服务器压力,服务成本大
UDP编程
1.基于Socket编程。Socket:插座,套接字;
2.UDP协议:使用的是DatagramSocket
3.发送端:
1.准备通讯点对象
2.准备发送的包对象
3.发送send()
4.接收端:
1.准备接收端点对象
2.准备接收数据的容器
3.调用通讯点的接收方法 receive()为堵塞式方法;
4.解析数据包,数据包的内容,数据长度,发送端的地址和端口号
5.构造方法
DatagramSocket();空参的构造方法,没有指定端口号,端口号为随机分配,一般用于发送端;
DtagramSocket(int port);指定端口号,一般用于接收端;
6.常用方法
send(DatadramPacket dp):将一个数据包进行发送;
receive(DatagramPacket dp):将数据接收到数据包中;
7.DatagramPacket的构造方法
DatagramPacket(buf,0,len,address,port)
常用方法:
getData()获取数据包
getLength()数据的长度
getAddress()获取发送端的地址
getPort()获取发送端的端口号
TCP编程
1.使用的通讯点依然是Socket类型;
2.客户端和服务端获取Socket对象的区别:
1.客户端使用Socket的构造方法,创建一个Socket对象;
2.服务器不能使用自己创建的方法,而是使用一个服务端的特殊的对象,接收客户端发来的请求,生成一个为客户端服务的Socket对象
3.TCP客户端
Socket(ip地址,端口号);客户在创建的时候明确链接哪个服务器;
4.TCP服务端
ServerSocket(端口号):服务器端
accept():接收用户发送的数据,这是阻塞式方法
5.获取IO流对象
通过Socket对象获取网络的输入输出流;
getOutputStream()
getInputStream()
6.释放流资源和通讯点对象