从零开始:轻松学会Java网络编程,实战案例详解

2026-09-06 0 阅读

Java网络编程简介

Java作为一种跨平台、面向对象的编程语言,在网络编程领域有着广泛的应用。Java网络编程是指利用Java语言提供的网络编程API,实现网络通信的过程。Java网络编程主要包括以下几个部分:URL类、Socket类、ServerSocket类等。

Java网络编程基础

1. URL类

URL(Uniform Resource Locator)是统一资源定位符的缩写,用于指定网络资源的地址。Java中的URL类提供了对URL的处理功能。

URL url = new URL("http://www.example.com");
System.out.println("协议:" + url.getProtocol());
System.out.println("主机:" + url.getHost());
System.out.println("端口:" + url.getPort());
System.out.println("路径:" + url.getPath());
System.out.println("查询:" + url.getQuery());

2. Socket类

Socket是网络通信的基本单元,用于实现客户端和服务器之间的通信。Java中的Socket类提供了创建Socket的方法。

// 创建客户端Socket
Socket socket = new Socket("localhost", 8080);
// 创建输入流
InputStream inputStream = socket.getInputStream();
// 创建输出流
OutputStream outputStream = socket.getOutputStream();
// 发送数据
outputStream.write("Hello, Server!".getBytes());
// 关闭流和Socket
outputStream.close();
inputStream.close();
socket.close();

3. ServerSocket类

ServerSocket类用于创建服务器端的Socket,用于监听客户端的连接请求。

// 创建服务器端Socket
ServerSocket serverSocket = new ServerSocket(8080);
// 等待客户端连接
Socket socket = serverSocket.accept();
// 创建输入流
InputStream inputStream = socket.getInputStream();
// 创建输出流
OutputStream outputStream = socket.getOutputStream();
// 接收数据
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String data = new String(buffer, 0, len);
System.out.println("客户端发送:" + data);
// 发送数据
outputStream.write("Hello, Client!".getBytes());
// 关闭流和Socket
outputStream.close();
inputStream.close();
socket.close();
serverSocket.close();

实战案例详解

1. 客户端-服务器聊天程序

下面是一个简单的客户端-服务器聊天程序示例。

服务器端代码:

ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
    Socket socket = serverSocket.accept();
    new Thread(new ChatServer(socket)).start();
}

客户端代码:

Socket socket = new Socket("localhost", 8080);
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
Scanner scanner = new Scanner(System.in);
PrintWriter writer = new PrintWriter(outputStream, true);

while (true) {
    System.out.println("请输入消息:");
    String message = scanner.nextLine();
    writer.println(message);
    String response = inputStream.readLine();
    System.out.println("服务器回复:" + response);
}

2. 文件上传下载

下面是一个简单的文件上传下载程序示例。

服务器端代码:

ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
    Socket socket = serverSocket.accept();
    new Thread(new FileServer(socket)).start();
}

客户端代码:

Socket socket = new Socket("localhost", 8080);
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
Scanner scanner = new Scanner(System.in);

System.out.println("请输入文件路径:");
String filePath = scanner.nextLine();
File file = new File(filePath);
if (file.exists()) {
    outputStream.write((file.getName() + "\n").getBytes());
    outputStream.write((int) file.length() + "\n".getBytes());
    FileInputStream fis = new FileInputStream(file);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = fis.read(buffer)) != -1) {
        outputStream.write(buffer, 0, len);
    }
    fis.close();
    System.out.println("文件上传成功!");
} else {
    System.out.println("文件不存在!");
}

通过以上案例,我们可以了解到Java网络编程的基本概念和实战应用。希望本文能帮助你轻松学会Java网络编程。

分享到: