引言

网络编程是计算机科学中的一个重要领域,它允许不同的计算机系统之间进行数据交换和通信。Java作为一种跨平台的语言,在网络编程方面有着广泛的应用。本文将带你通过实战案例,轻松掌握Java网络编程的技巧。

Java网络编程基础

1. 网络编程概述

网络编程主要涉及以下几个方面:

  • 网络协议:如TCP/IP、HTTP等。
  • 网络编程模型:如客户端-服务器模型、P2P模型等。
  • Java网络编程API:如java.net包中的类和接口。

2. Java网络编程API

Java提供了丰富的网络编程API,以下是一些常用的类和接口:

  • InetAddress:用于获取IP地址。
  • Socket:用于创建客户端和服务器之间的连接。
  • ServerSocket:用于监听端口并接受客户端连接。
  • InputStreamOutputStream:用于数据的读写。

实战案例:TCP客户端-服务器通信

1. 创建TCP服务器

以下是一个简单的TCP服务器示例,它监听端口并等待客户端连接:

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

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(1234);
        System.out.println("Server is listening on port 1234");

        Socket clientSocket = serverSocket.accept();
        System.out.println("New client connected");

        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("Received: " + inputLine);
            out.println("Echo: " + inputLine);
        }

        in.close();
        out.close();
        clientSocket.close();
        serverSocket.close();
    }
}

2. 创建TCP客户端

以下是一个简单的TCP客户端示例,它连接到服务器并发送数据:

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

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 1234);
        System.out.println("Connected to server");

        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("Server response: " + in.readLine());
        }

        out.close();
        in.close();
        stdIn.close();
        socket.close();
    }
}

总结

通过以上实战案例,我们可以看到Java网络编程的基本原理和实现方法。在实际应用中,网络编程可能会更加复杂,但基本的思路和方法是相似的。希望这篇文章能帮助你入门Java网络编程,并在实践中不断学习和提高。