网络编程TCP/UDP是什么?
Java的主流应用就是B/S架构的系统开发,而B/S架构的系统设计往往离不开网络编程。当初是一个小组为了开发原型系统而讨论并设计了大部分的OSI(网络七层模型),让我们复习一下网络七层模型吧:这是之前的网络模型,而我们实际上使用较多的网络模型是TCP/IP模型,让我们来看看两者的差距。
网络编程TCP/UDP做什么?
用3句话简单的理解:IP协议是用来在网络层发送数据包的。TCP用来传输数据包建立连接的传输,保证顺序性和正确性。UDP建立无连接的传输协议,速度快不保证正确性。一般使用UDP协议进行传输的都是可容忍数据丢失的应用,例如一些语音和视频的传输。
网络编程TCP/UDP怎么用?
在介绍TCP/UDP使用之前我们不得不先引入Socket(套接字)概念,Socket是TCP传输控制协议的操作基本单元,也就是网络传输双方端点的抽象化。套接字有三种类型,流套接字:顾名思义通过流传输数据,用于TCP协议。数据报套接字:他通过发送数据包来传输数据,用于UDP协议。原始套接字:访问其他协议。套接字的工作流程分为三步走:
1.服务器监听
所谓服务器监听,是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态 。
2.客户端请求
所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端接字提出连接请求 。
3.连接确认
所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,就会响应客户端套接字的请求,建立一个新的线程,并把服务器端套接字的描述发送给客户端。一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,接收其他客户端套接字的连接请求 。
用Socket模型实现TCP编程
首先给定一个服务端的程序用来监听指定的端口
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(6666); // 监听指定端口
System.out.println("server is running...");
for (;;) {
Socket sock = ss.accept();
System.out.println(