掌握Java网络编程,实战案例教你轻松上手

2026-08-24 0 阅读

在当今的互联网时代,网络编程已经成为软件开发不可或缺的一部分。Java作为一种广泛应用于企业级应用开发的语言,其强大的网络编程能力更是备受青睐。本文将通过实战案例,带领大家轻松上手Java网络编程。

一、Java网络编程基础

1.1 网络模型

在开始实战之前,我们先来了解一下Java网络编程的基础——网络模型。Java网络编程主要基于TCP/IP协议,它将网络通信分为应用层、传输层、网络层和数据链路层。

1.2 Java网络编程API

Java网络编程提供了丰富的API,主要包括:

  • java.net包:提供基本的网络操作类,如InetAddress、URL等。
  • java.io包:提供输入输出流操作,如InputStream、OutputStream等。
  • java.nio包:提供非阻塞I/O操作,如Selector、Channel等。

二、实战案例一:TCP客户端与服务器通信

下面我们通过一个简单的TCP客户端与服务器通信的案例,来学习Java网络编程。

2.1 创建TCP服务器

import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);
        System.out.println("TCP服务器启动,监听端口8080...");

        while (true) {
            Socket socket = serverSocket.accept();
            System.out.println("客户端连接成功!");
            new Thread(new ClientHandler(socket)).start();
        }
    }
}

class ClientHandler implements Runnable {
    private Socket socket;

    public ClientHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            String line;
            while ((line = in.readLine()) != null) {
                System.out.println("客户端:" + line);
                out.println("服务器:" + line);
            }

            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.2 创建TCP客户端

import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1", 8080);
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        String userInput;
        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("服务器:" + in.readLine());
        }

        socket.close();
    }
}

2.3 运行程序

运行TCP服务器和TCP客户端程序,在客户端输入信息,服务器端将接收到信息并返回。

三、实战案例二:HTTP客户端与服务器通信

接下来,我们通过一个简单的HTTP客户端与服务器通信的案例,来学习Java网络编程。

3.1 创建HTTP服务器

import java.io.*;
import java.net.*;

public class HTTPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);
        System.out.println("HTTP服务器启动,监听端口8080...");

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

class ClientHandler implements Runnable {
    private Socket socket;

    public ClientHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            String line;
            StringBuilder request = new StringBuilder();
            while ((line = in.readLine()) != null && !line.isEmpty()) {
                request.append(line).append("\n");
            }

            System.out.println("客户端请求:" + request.toString());
            out.println("HTTP/1.1 200 OK");
            out.println("Content-Type: text/html");
            out.println();
            out.println("<html><body><h1>HTTP服务器响应</h1></body></html>");

            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.2 创建HTTP客户端

import java.io.*;
import java.net.*;

public class HTTPClient {
    public static void main(String[] args) throws IOException {
        URL url = new URL("http://127.0.0.1:8080");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");

        int responseCode = connection.getResponseCode();
        System.out.println("HTTP响应码:" + responseCode);

        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine).append("\n");
        }
        in.close();

        System.out.println("HTTP服务器响应:" + response.toString());
        connection.disconnect();
    }
}

3.3 运行程序

运行HTTP服务器和HTTP客户端程序,客户端将发送GET请求到服务器,服务器端将返回响应。

四、总结

通过以上实战案例,我们学习了Java网络编程的基础知识和常用API,并掌握了如何创建TCP和HTTP客户端与服务器。在实际开发中,我们可以根据需求选择合适的网络编程模型和API,实现丰富的网络功能。希望本文能帮助你轻松上手Java网络编程。

分享到: