C/S
S就是服务器,C是客户端,客户端要与服务器端进行交互必须借助于网络,在JAVA中网络的通信不光可以在C/S中实现也可以B/S中实现。
(了解)
TCP/IP协议
TCP/IP(Transmission Control Protocol / Internet Protocol) 传输控制/网际协议,又称网络通信协议,TCP、IP协议时网络通信中最基本的协议
IP
计算机在网络的唯一标识,是计算机的数字标识
域名
计算机的字符化标识,域名不能被网络设别识别,必须借助DNS进行解析才能获取
端口
计算机与外界通讯的接口,其范围是0~65535,1024以外端口为系统所占用
P2P:Point to Point ,网络中两台计算机进行互相访问,在这过程中,两台计算机既担负着服务器的角色提供信息,又担负着客户端的角色获取信息。
要实现P2P必须先通过IP定位知道对方在网络中的位置
InetAddress
该类表示IP地址对象,可以通过InetAddress可以获取计算机的IP,主机名等计算机身份信息
通过主机名或域名获取IP地址
创建IP地址对象根据域名创建
InetAddress address = InetAddress.getByName("www.qq.com");
打印显示该地址中的IP
System.out.println(address.getHostAddress());
通过IP地址或域名获取主机名
//根据IP地址创建
InetAddress address = InetAddress.getByName("192.168.9.100");
//获取主机名称
System.out.println(address.getHostName());
Socket对象
Socket又称套接字,是TCP/IP协议中的基本概念,Socket是两个程序进行通讯的端点,其功能是负责将信息先写入Socket,再将TCP/IP包信息发送到网络中另一个Socket端,Sockte可以在同一台电脑中,也可以网络中的远程计算机上。
ServerSocket服务端
ServerSocket是建立在服务器端的套接字,负责开放端口并监测连入的客户端套接字。
服务器端的监听
Socket socket = server.accept();
服务器端以阻塞的方式监听连入的客户端,获取客户端套接字对象
//创建服务端的sockect对象,该对象打开了9090端口
System.out.println("服务器开启了9090端口");
ServerSocket server = new ServerSocket(9090);
//开启服务端的socket,并通过线程阻塞的方式负责监听连入该服务端客户端socket
//返回值表示连入服务器的客户端对象
System.out.println("服务器运行中,正在等待客户端等的连接…………");
Socket client = server.accept();
System.out.println(client.getInetAddress().getHostAddress()+"已经连入服务器");
Socket客户端
Socket是客户端的访问接口,用于对服务器端的访问,负责将信息写入并发送给服务器端。
System.out.println("客户端正在连接服务器.......");
Socket client = new Socket("192.168.9.100", 9090);
System.out.println("服务器连接成功");
//创建字符流用来接收键盘的输入
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Socket具备两个字节流获取的方法
getInputStream()
getOutputStream()
//获取客户端的输入流,读取客户端发送的信息
InputStream is = client.getInputStream();
//获取客户端等的输出流,用来将数据写给服务器
OutputStream os = client.getOutputStream();
//客户端的输出流
private BufferedWriter writer;
//客户端的输入流
private BufferedReader reader;
//获取输出流
writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
//获取输入流
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
1对1的数据传输
建立服务器端打开开放端口并监听客户端
建立客户端连接服务器,写入数据并通过输出流传递给服务器端
1对多传输
建立服务器并打开端口并监听连入的客户端
通过多线程管理多个连入的客户端,每个客户端分别开辟线程管理
建立客户端