网络应用模型
C/S:这里的C是指Client,即客户端。而S是指Server,即服务端。网络上的的应用本质上就是两 台计算机上的软件进行交互。而客户端和服务端就是对应的两个应用程序,即客户端应用程序和服 务端应用程序
B/S:这里的B是Browser,即浏览器,而S是指Server。浏览器是一个通用的客户端,可以与不同 的服务端进行交互。但是本质上B/S还是C/S结构,只不过浏览器是一个通用的客户端而已。
可靠传输与不可靠传输
TCP协议与UDP协议都是传输协议,客户端程序与服务端程序基于这些协议完成网络间的数据交互。
TCP是可靠传输协议,是面向连接的协议,保证数据传输中的可靠性和完整性。 TCP保证可靠传输,但是传输效率低,占用带宽高。
UDP是不可靠传输协议,不保证数据传输的完整性。
UDP不保证可靠传输,但是传输速度块,占用带宽小。
Socket与ServerSocket
java.net.Socket Socket(套接字)
封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过它获取两个流(一个输入一个输出),然后使用这两个流的读写操作完成与服务端的数据交互
java.net.ServerSocket ServerSocket
运行在服务端,作用有两个: 向系统申请服务端口,客户端的Socket就是通过这个端口与服务端建立连接的。 监听服务端口,一旦一个客户端通过该端口建立连接则会自动创建一个Socket,并通过该 Socket与客户端进行数据交互。
客户端
Socket的实例化时需要传入两个参数:
1:服务器的IP地址
2:服务端应用程序打开的端口
我们通过IP地址可以找到服务器在网络中的位置,通过端口找到运行在 服务器上的服务端应用程序
public class Client {
private Socket socket;
public Client() {
try {
System.out.println("正在建立链接");
socket = new Socket("10.61.66.113", 8088);
System.out.println("链接成功");
} catch (IOException e) {
e.printStackTrace();
}
}
public void start() {
}
public static void main(String[] args) {
Client c = new Client();
c.start();
}
}
服务端
java.net.ServerSocket ServerSocket主要有两个作用
1、向系统申请服务端口,客户端就是通过这个端口与服务器建立链接的
2、监听端口等待客户端的连接 一旦一个客户端与服务端建立连接,此时会创建一个Socket与该客户端交互
public class Server {
private ServerSocket serverSocket;
public Server() {
try {
System.out.println("正在启动服务端");
serverSocket = new ServerSocket(8088);
System.out.println("服务端启动完毕");
} catch (IOException e) {
e.printStackTrace();
}
}
public void start() {
try {
System.out.println("等待客户端连接");
Socket socket = serverSocket.accept();
System.out.println("客户端连接了");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.start();
}
}