1 什么是网络编程
网络编程的本质就是两个设备之间的数据交换,当然在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,就是把一个设备中的数据发送给另外一个设备。
现在的网络编程基本上都是基于请求 / 响应方式的,也就是一个设备发送请求数据给另外一个,然后接受另一个设备的反馈。
在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称为为客户端(Client)等待其他程序连接的程序称作服务器(Server)客户端程序可以在需要的时候启动,而服务器为了能够时刻响应连接,则需要一直启动。
总结:通过编码的方式让不同计算机之间通过网路相互通信(传递数据)
2 网络编程要解决的核心问题
a. 寻址:使用 IP + 端口
b. 协议:数据的传输规则 / 方式
3 常见的协议有哪些
a. UDP 协议:面向非连接的协议,传递数据时不关心连接状态直接发送,他的传输效率高,传递的数据不安全。
b. TCP 协议:面向连接的协议,传递数据时关系连接的状态,连接成功才会发送数据,传递效率相对于UDP协议要低,会通过三次握手机制保证数据的完整性。
c. HTTP 协议:属于应用层协议,层面比较高,HTTP 协议底层还是通过 TCP 协议传输。
4 网络中的OSI模型
OSI是Open System Interconnection的缩写,意为开放式系统互联. OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 注意: 所处的层越低传输效率越高
5 常见的网络编程
C/S 访问某个服务器端的时候,需要特定的客户端;
B/S 浏览器,是一个公共的客户端,通过浏览器可以给不同的服务器发送数据。
客户端:
a. C/S 模式中对应的客户端;
b. B/S 中的浏览器,通用的客户端;
c. 通过代码实现:http-client(模拟浏览器)
d. 自己编码实现一个客户端;
服务端:
自己编码实现服务端。
6 Java 中网络编程的开发思路
Java中实现网络编程,也叫Socket编程,通过Java实现网络编程主要有一下几种方式:
a. Java BIO:基于Java阻塞IO实现网络编程(Block IO 同步阻塞IO)
b. Java NIO:基于Java的同步非阻塞IO实现网络编程(同步非阻塞IO)
7. 网络编程的实现
7.1 网络编程开发服务器端
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * 创建serverScoket对象 服务端对象 */ public class TestServerSocket { public static void main(String[] args) throws IOException { //创建一个服务器 ServerSocket serverSocket = new ServerSocket(8989); System.out.println("服务器已经启动........"); while(true) { //让服务器接受|接收客户端 Socket socket = serverSocket.accept(); //处理请求数据 InputStream inputStream = socket.getInputStream(); StringBuilder builder = new StringBuilder(); int len = 0; byte[] b = new byte[1024]; while (true) { len = inputStream.read(b); if (len == -1) break; builder.append(new String(b, 0, len)); } System.out.println(builder.toString()); socket.shutdownInput();//获取请求数据 结束 //处理业务 //服务端响应客户端数据 OutputStream outputStream = socket.getOutputStream(); outputStream.write("讲".getBytes()); socket.shutdownOutput(); } } }