在互联网时代,网络编程是计算机科学中不可或缺的一部分。Java作为一种跨平台、面向对象的编程语言,在网络编程领域有着广泛的应用。本文将通过实战案例,带你一步步轻松掌握Java网络编程。

一、Java网络编程基础

1.1 网络编程概述

网络编程是指通过计算机网络实现不同计算机之间的通信。Java网络编程主要依赖于Java的java.net包中的类和接口。

1.2 常用网络协议

  • TCP/IP:传输控制协议/互联网协议,是互联网的基础协议。
  • HTTP:超文本传输协议,用于在Web浏览器和服务器之间传输数据。
  • FTP:文件传输协议,用于在网络上传输文件。

1.3 Java网络编程常用类

  • Socket:Java网络编程的核心类,用于实现客户端和服务器之间的通信。
  • ServerSocket:服务器端Socket,用于监听客户端的连接请求。
  • InputStream和OutputStream:用于读取和写入数据流。

二、Java网络编程实战案例

2.1 TCP客户端与服务器端通信

2.1.1 客户端

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", 6666);
        OutputStream os = socket.getOutputStream();
        PrintWriter out = new PrintWriter(os, true);
        out.println("Hello, Server!");

        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line = br.readLine();
        System.out.println("Server: " + line);

        socket.close();
    }
}

2.1.2 服务器端

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

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(6666);
        Socket socket = serverSocket.accept();
        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line = br.readLine();
        System.out.println("Client: " + line);

        OutputStream os = socket.getOutputStream();
        PrintWriter out = new PrintWriter(os, true);
        out.println("Hello, Client!");

        socket.close();
        serverSocket.close();
    }
}

2.2 HTTP客户端与服务器端通信

2.2.1 客户端

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

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

        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

        connection.disconnect();
    }
}

2.2.2 服务器端

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

public class HTTPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(80);
        while (true) {
            Socket socket = serverSocket.accept();
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line = br.readLine();
            System.out.println("Client: " + line);

            OutputStream os = socket.getOutputStream();
            PrintWriter out = new PrintWriter(os, true);
            out.println("HTTP/1.1 200 OK");
            out.println("Content-Type: text/html");
            out.println();
            out.println("<html><body>Hello, Client!</body></html>");

            socket.close();
        }
    }
}

三、总结

通过以上实战案例,相信你已经对Java网络编程有了初步的了解。在实际开发过程中,网络编程的应用场景非常广泛,例如Web开发、分布式系统等。希望本文能帮助你轻松掌握Java网络编程,为你的编程之路添砖加瓦。