当前位置: 首页 > news >正文

Java(网络编程)

Java 网络编程详解

Java 网络编程是指使用 Java 语言开发能够在网络环境中进行通信的应用程序。它主要基于客户端 - 服务器模型,通过 套接字 (Socket)实现不同设备间的数据交换。下面从核心概念到实践案例进行全面介绍。

一、核心概念

1. TCP 与 UDP
  • TCP (Transmission Control Protocol)

    • 面向连接,提供可靠的数据传输(如 HTTP、FTP)。
    • 特点:三次握手建立连接,数据有序且无差错。
  • UDP (User Datagram Protocol)

    • 无连接,提供不可靠但高效的数据传输(如视频流、DNS)。
    • 特点:无需建立连接,可能丢包或乱序,但开销小。
2. 端口号
  • 标识进程的逻辑地址(范围:0-65535)。
  • 常见端口:HTTP (80)、HTTPS (443)、FTP (21)、SSH (22)。
3. 套接字 (Socket)
  • 网络编程的基础接口,分为:
    • TCP Socketjava.net.Socket(客户端)和java.net.ServerSocket(服务器)。
    • UDP Socketjava.net.DatagramSocketjava.net.DatagramPacket

二、TCP 网络编程

1. TCP 客户端实现
import java.io.*;
import java.net.*;public class TCPClient {public static void main(String[] args) {try {// 1. 创建Socket并连接到服务器Socket socket = new Socket("localhost", 8888);System.out.println("客户端已连接到服务器");// 2. 获取输入输出流PrintWriter out = new PrintWriter(socket.getOutputStream(), true);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));// 3. 发送和接收消息String message;while ((message = userInput.readLine()) != null) {out.println(message);  // 发送消息到服务器System.out.println("服务器回复: " + in.readLine());  // 接收服务器回复}// 4. 关闭连接socket.close();} catch (IOException e) {e.printStackTrace();}}
}
2. TCP 服务器实现
import java.io.*;
import java.net.*;public class TCPServer {public static void main(String[] args) {try {// 1. 创建ServerSocket并监听端口ServerSocket serverSocket = new ServerSocket(8888);System.out.println("服务器启动,等待客户端连接...");while (true) {// 2. 接受客户端连接Socket clientSocket = serverSocket.accept();System.out.println("客户端已连接: " + clientSocket.getInetAddress());// 3. 为每个客户端创建线程处理请求new Thread(() -> {try {// 获取输入输出流BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);// 处理客户端消息String inputLine;while ((inputLine = in.readLine()) != null) {System.out.println("客户端消息: " + inputLine);out.println("服务器已收到: " + inputLine);  // 回复客户端}// 关闭连接clientSocket.close();} catch (IOException e) {e.printStackTrace();}}).start();}} catch (IOException e) {e.printStackTrace();}}
}

三、UDP 网络编程

1. UDP 客户端实现
import java.io.*;
import java.net.*;public class UDPClient {public static void main(String[] args) {try {// 1. 创建DatagramSocketDatagramSocket socket = new DatagramSocket();// 2. 准备数据String message = "Hello, UDP Server!";byte[] sendData = message.getBytes();// 3. 创建目标地址和端口InetAddress address = InetAddress.getByName("localhost");int port = 9999;// 4. 创建并发送数据包DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, address, port);socket.send(sendPacket);// 5. 接收服务器响应byte[] receiveData = new byte[1024];DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);socket.receive(receivePacket);String response = new String(receivePacket.getData(), 0, receivePacket.getLength());System.out.println("服务器响应: " + response);// 6. 关闭Socketsocket.close();} catch (IOException e) {e.printStackTrace();}}
}
2. UDP 服务器实现
import java.io.*;
import java.net.*;public class UDPServer {public static void main(String[] args) {try {// 1. 创建DatagramSocket并绑定端口DatagramSocket socket = new DatagramSocket(9999);System.out.println("UDP服务器启动,监听端口: 9999");while (true) {// 2. 接收客户端数据包byte[] receiveData = new byte[1024];DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);socket.receive(receivePacket);// 3. 处理数据String message = new String(receivePacket.getData(), 0, receivePacket.getLength());InetAddress clientAddress = receivePacket.getAddress();int clientPort = receivePacket.getPort();System.out.println("收到来自 " + clientAddress + ":" + clientPort + " 的消息: " + message);// 4. 发送响应String response = "UDP服务器已收到: " + message;byte[] sendData = response.getBytes();DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);socket.send(sendPacket);}} catch (IOException e) {e.printStackTrace();}}
}

五、常见应用场景

  1. 即时通讯:如聊天软件(TCP)。
  2. 文件传输:如 FTP(TCP)。
  3. 实时游戏:如多人在线游戏(UDP)。
  4. Web 服务:如 REST API 调用(HTTP)。
  5. 分布式系统:如微服务间通信(HTTP/2)。

六、注意事项

  1. 异常处理:网络操作需捕获IOException
  2. 资源管理:使用try-with-resources确保 Socket 关闭。
  3. 多线程:TCP 服务器需为每个客户端创建独立线程。
  4. 缓冲区大小:UDP 数据包大小受限于 MTU(通常≤65507 字节)。
  5. 性能优化:使用 NIO(非阻塞 IO)处理高并发场景。

网络编程是 Java 企业级开发的核心技能,掌握 TCP/UDP 通信原理和 HTTP 协议对构建分布式系统至关重要。

相关文章:

  • unittest 和 pytest 框架
  • 浅谈软件开发工作流
  • Vue3 Router 使用指南:从基础到高级用法
  • openEuler虚拟机中容器化部署
  • springboot+mybatis面试题
  • CQF预备知识:Python相关库 -- 插值过渡指南 scipy.interpolate
  • 接口测试常用工具及测试方法(基础篇)
  • [SKE]CPU 与 GPU 之间数据加密传输的认证与异常处理
  • 触觉智能RK3576核心板工业应用之软硬件全国产化,成功适配开源鸿蒙OpenHarmony5.0
  • aws s3 sdk c++使用指南、适配阿里云oss和aws
  • OCCT 中 BRepBuilderAPI_MakePolygon与BRepBuilderAPI_MakeWire
  • 5种常见的网络保密通信协议
  • 如何从 Ansys SpaceClaim 模型中提取 CAD 数据,该模型是在我计算机上安装的未来版本中创建的?
  • 亚马逊云服务器配置推荐
  • SMB协议在Windows内网中的核心地位
  • 华为:eSight网管平台使用snmp纳管交换机
  • React---Hooks深入
  • Shell 脚本:系统管理与任务自动化的利器
  • 基于Jenkins与Kubernetes的系统化变更管理实践
  • 【C/C++】创建文件夹
  • 做电影网站被抓/饥饿营销的十大案例
  • ui素材网站/免费的个人网页
  • wordpress可以做电影站/谷歌搜索引擎怎么才能用
  • netbean做网站/信息流广告
  • 影视网站模板怎么做/长沙seo优化公司
  • 做养生类项目的网站/口碑营销的形式