网络编程
1、网络编程概述
计算机网络:是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络编程:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
2、网络模型
计算机网络之间以何种规则进行通信,就是网络模型研究问题。
网络模型一般是指
OSI(Open System Interconnection开放系统互连)参考模型(七层模型)
TCP/IP参考模型
3、网络通信的三个要素
IP地址:InetAddress
网络中设备的标识,不易记忆,可用主机名
端口号:
用于标识进程的逻辑地址,不同进程的标识
传输协议:通讯的规则常见协议:TCP,UDP。
4、IP地址
要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,在TCP/IP协议中,这个标识号就是IP地址。
那么,我们如果获取和操作IP地址呢?为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress供我们使用。
5、InetAddress类的使用
没有构造方法,那么如何使类提供的功能呢?
InetAddress.getByName("PC201511270151");
InetAddress.getByAddress(bytes);
InetAddress.getLocalHost();
可以通过类的静态方法进行调用
成员方法:
getHostAddress() // 获取IP地址
getHostName() // 获取主机名称 可能不成功
java.net.InetAddress类的getHostName方法用来获取某一IP地址的主机名。返回结果:此IP地址的主机名;如果安全检查不允许操作,则返回IP地址的文本表示形式。
6、端口号
物理端口 网卡口
逻辑端口 我们指的就是逻辑端口
每个网络程序都会至少有一个逻辑端口
用于标识进程的逻辑地址,不同进程的标识
有效端口:0~65535,其中0~1024系统使用或保留端口。
通过360可以查看端口号-工具-流量防火墙-网络连接
7、协议UDP和TCP
UDP:将数据源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快.
TCP: 建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低.
udp:
面向无连接。
不可靠。
速度快。
将数据封包传输,数据包最大64k。
举例:
聊天留言,在线视频,视频会议,发短信,邮局包裹。
tcp:
面向连接。
安全可靠
效率稍低。
通过三次握手确保连接的建立。
举例:
下载,打电话,QQ聊天(你在线吗,在线,就回应下,就开始聊天了)
8、Socket套接字TCP
Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
Socket原理机制:
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
9、UDP传输
DatagramSocket与DatagramPacket
建立发送端,接收端
建立数据包
调用Socket的发送,接收方法方法
关闭Socket
发送端与接收端是两个独立的运行程序
1、UDP传输——发送端:
1:建立udp的socket服务
2:将要发送的数据封装成数据包
3:通过udp的socket服务,将数据包发送出
4:关闭资源
2、UDP传输——接收端:
建立udp的socket服务.
通过receive方法接收数据
将收到的数据存储到数据包对象中
通过数据包对象的完成对接收到数据进行解析.功能来
可以对资源进行关闭
10、TCP传输
Socket和ServerSocket
建立客户端和服务器端
建立连接后,通过Socket中的IO流进行数据的传输
关闭socket
同样,客户端与服务器端是两个独立的应用程序。
1、TCP传输——客户端
1:建立客户端的Socket服务,并明确要连接的服务器。
2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流.
3:通过Socket对象的方法,可以获取这两个流
4:通过流的对象可以对数据进行传输
5:如果传输数据完毕,关闭资源
2、TCP传输——服务器端
1:建立服务器端的socket服务,需要一个端口
2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信
3:通过客户端的获取流对象的方法,读取数据或者写入数据
4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的