引言:Java网络编程的魅力与挑战

Java作为一种跨平台、面向对象的编程语言,在网络编程领域有着广泛的应用。Java网络编程不仅可以帮助我们实现网络通信,还能构建分布式系统。然而,对于初学者来说,Java网络编程的学习之路并非一帆风顺。本文将为你带来100个Java网络编程实例,助你从入门到实战,轻松掌握Java网络编程。

第一部分:Java网络编程基础

1. 理解Java网络编程的概念

Java网络编程是指使用Java语言实现网络通信的过程。它主要包括以下几个方面:

  • Socket编程:Socket是网络通信的基本单元,用于在两个程序之间建立连接。
  • URL编程:URL(统一资源定位符)用于定位网络资源。
  • HTTP编程:HTTP是互联网上应用最为广泛的网络协议之一。

2. 创建Socket连接

以下是一个简单的Socket客户端示例:

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

public class SocketClient {
    public static void main(String[] args) {
        String host = "127.0.0.1"; // 服务器地址
        int port = 12345; // 服务器端口号

        try (Socket socket = new Socket(host, port);
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {

            out.println("Hello, Server!");
            String response = in.readLine();
            System.out.println("Server response: " + response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 创建Socket服务器

以下是一个简单的Socket服务器示例:

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

public class SocketServer {
    public static void main(String[] args) {
        int port = 12345; // 服务器端口号

        try (ServerSocket serverSocket = new ServerSocket(port);
             Socket socket = serverSocket.accept();
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                out.println("Echo: " + inputLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

第二部分:Java网络编程进阶

4. 使用URL编程获取网页内容

以下是一个使用URL编程获取网页内容的示例:

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

public class URLExample {
    public static void main(String[] args) {
        String urlString = "http://www.example.com";
        try {
            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");

            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder content = new StringBuilder();

                while ((inputLine = in.readLine()) != null) {
                    content.append(inputLine);
                }
                in.close();

                System.out.println("Webpage content: " + content.toString());
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. 使用HTTP客户端库发送HTTP请求

以下是一个使用HttpClient库发送HTTP请求的示例:

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

public class HttpClientExample {
    public static void main(String[] args) {
        String url = "http://www.example.com";
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(url))
                    .build();

            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println("Response Code: " + response.statusCode());
            System.out.println("Response Body: " + response.body());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

第三部分:Java网络编程实战案例

6. 实现简单的文件传输

以下是一个简单的文件传输示例:

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

public class FileTransfer {
    public static void main(String[] args) {
        String host = "127.0.0.1"; // 服务器地址
        int port = 12345; // 服务器端口号
        String filePath = "path/to/file.txt"; // 文件路径

        try (Socket socket = new Socket(host, port);
             FileInputStream fileInputStream = new FileInputStream(filePath);
             OutputStream outputStream = socket.getOutputStream()) {

            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fileInputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

7. 实现简单的聊天室

以下是一个简单的聊天室示例:

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

public class ChatRoom {
    public static void main(String[] args) {
        String host = "127.0.0.1"; // 服务器地址
        int port = 12345; // 服务器端口号

        try (Socket socket = new Socket(host, port);
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println("Server: " + inputLine);
            }

            out.println("Hello, Server!");
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

结语

通过以上100个Java网络编程实例,相信你已经对Java网络编程有了更深入的了解。在实际开发过程中,你可以根据需求选择合适的编程模型和工具,实现各种网络应用。祝你在Java网络编程的道路上越走越远!