### Java基础之网络编程讲解——适合初级人员入门学习 #### 一、网络编程概述 Java 网络编程是 Java 开发中一个重要的分支,它允许开发者创建可以在网络上进行通信的应用程序。对于初学者来说,理解网络编程的基本概念是非常重要的。 #### 二、网络模型 1. **OSI(Open System Interconnection开放系统互连)参考模型**: - **物理层**:定义了硬件接口标准,如网线和光纤接口类型、传输速率等。 - **数据链路层**:负责数据的封装与解封装,并处理MAC地址。 - **网络层**:处理IP地址的封装与解封装,路由选择等。 - **传输层**:定义了传输协议如TCP/UDP,并处理端口号。 - **会话层**:管理会话的建立和终止。 - **表示层**:负责数据的加密、解密、压缩等。 - **应用层**:提供应用程序接口,如FTP、HTTP等。 2. **TCP/IP 参考模型**: - 这是一种更为常用的模型,它简化了OSI模型,分为四层:应用层、传输层、网络层、网络接口层。 #### 三、网络通讯要素 1. **IP 地址**: - 用来唯一标识网络中的设备。 - 可以是IPv4或IPv6地址。 - 如192.168.1.223。 - 可以用主机名代替,如localhost对应127.0.0.1。 2. **端口号**: - 用于标识特定的服务或进程。 - 范围为0-65535。 - 0-1024通常被系统保留使用。 3. **传输协议**: - 包括TCP和UDP。 - TCP是面向连接的,保证数据的顺序性和完整性;UDP是无连接的,适用于实时传输。 #### 四、传输层协议详解 1. **TCP(传输控制协议)**: - 面向连接的协议,确保数据的可靠传输。 - 使用三次握手建立连接。 - 数据传输过程中进行流量控制和拥塞控制。 2. **UDP(用户数据报协议)**: - 无连接的协议,不保证数据的顺序性和完整性。 - 数据传输速度快,适用于实时通信场景。 #### 五、Socket 编程 1. **Socket**: - 是一种用于网络通信的技术。 - 它定义了如何在网络中打开连接并进行数据交换。 - Socket通信基于TCP或UDP协议。 2. **UDP 传输**: - 使用`DatagramSocket`和`DatagramPacket`类。 - 发送端需要明确目标IP地址和端口。 - 接收端指定监听的端口。 3. **TCP 传输**: - 使用`Socket`和`ServerSocket`类。 - 客户端和服务器端分别创建。 - 通过Socket中的输入输出流进行数据传输。 #### 六、实例代码解析 1. **UDP 发送端示例**: ```java DatagramSocket ds = new DatagramSocket(); byte[] by = "hello,udp".getBytes(); DatagramPacket dp = new DatagramPacket(by, 0, by.length, InetAddress.getByName("127.0.0.1"), 10000); ds.send(dp); ds.close(); ``` 2. **UDP 接收端示例**: ```java DatagramSocket ds = new DatagramSocket(10000); byte[] by = new byte[1024]; DatagramPacket dp = new DatagramPacket(by, by.length); ds.receive(dp); String str = new String(dp.getData(), 0, dp.getLength()); System.out.println(str + "--" + dp.getAddress()); ds.close(); ``` 3. **TCP 客户端示例**: ```java Socket socket = new Socket("127.0.0.1", 8080); OutputStream out = socket.getOutputStream(); InputStream in = socket.getInputStream(); out.write("Hello, TCP!".getBytes()); byte[] buffer = new byte[1024]; int len = in.read(buffer); System.out.println(new String(buffer, 0, len)); socket.close(); ``` 4. **TCP 服务器端示例**: ```java ServerSocket serverSocket = new ServerSocket(8080); Socket socket = serverSocket.accept(); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); byte[] buffer = new byte[1024]; int len = in.read(buffer); System.out.println("Received from client: " + new String(buffer, 0, len)); out.write("Hello from server!".getBytes()); socket.close(); serverSocket.close(); ``` 通过上述内容的学习,初学者可以掌握Java网络编程的基础知识,包括网络模型的理解、网络通讯要素的认识以及如何使用Socket进行TCP/UDP通信。这些知识是构建更复杂网络应用程序的基础。
剩余18页未读,继续阅读
- 粉丝: 3003
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助