Java作为一门广泛应用于企业级应用开发的编程语言,其网络编程能力尤为出色。本文将带领你轻松入门Java网络编程,通过具体的实例教你如何搭建网络应用。

网络编程基础

1. TCP/IP协议

首先,我们需要了解TCP/IP协议。它是互联网的基础协议,负责在网络中传输数据。TCP(传输控制协议)确保数据的可靠传输,而IP(互联网协议)负责数据的路由。

2. Java网络编程API

Java提供了丰富的网络编程API,包括java.netjava.io包中的类。这些类可以帮助我们轻松地实现网络通信。

搭建简单的网络应用

1. 服务器端

下面是一个简单的Java网络服务器端代码示例:

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

public class SimpleServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(1234);
        System.out.println("服务器启动,等待客户端连接...");

        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功!");

        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println("收到客户端消息:" + inputLine);
            out.println("服务器已收到消息:" + inputLine);
        }

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

2. 客户端

接下来是一个简单的Java网络客户端代码示例:

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

public class SimpleClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 1234);
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        out.println("你好,服务器!");
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println("收到服务器消息:" + inputLine);
        }

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

实例:文件传输

1. 服务器端

下面是一个简单的Java网络文件传输服务器端代码示例:

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

public class FileTransferServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(1234);
        System.out.println("服务器启动,等待客户端连接...");

        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功!");

        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
        DataInputStream in = new DataInputStream(socket.getInputStream());

        String fileName = in.readUTF();
        System.out.println("收到文件名:" + fileName);

        File file = new File(fileName);
        FileInputStream fis = new FileInputStream(file);
        byte[] buffer = new byte[1024];
        int bytesRead;

        while ((bytesRead = fis.read(buffer)) != -1) {
            out.write(buffer, 0, bytesRead);
        }

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

2. 客户端

下面是一个简单的Java网络文件传输客户端代码示例:

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

public class FileTransferClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 1234);
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        out.println("example.txt");
        System.out.println("文件传输中...");

        FileOutputStream fos = new FileOutputStream("downloaded_" + "example.txt");
        byte[] buffer = new byte[1024];
        int bytesRead;

        while ((bytesRead = socket.getInputStream().read(buffer)) != -1) {
            fos.write(buffer, 0, bytesRead);
        }

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

总结

通过本文的学习,相信你已经对Java网络编程有了初步的了解。通过实际编写代码,你可以进一步掌握网络编程的技巧。希望这篇文章能帮助你轻松入门Java网络编程,搭建自己的网络应用。