Java基础(二十四):网络编程

网络编程是Java语言中一个非常重要且基础的部分,它使得Java程序能够在网络中进行通信。Java提供了一套丰富的API来处理网络通信,包括Socket、ServerSocket等类。通过它们,开发者可以很方便地实现客户端与服务器之间的通信。

一、Socket与ServerSocket

在Java中,网络编程主要依赖于Socket和ServerSocket类。Socket类用于客户端的通信,而ServerSocket类用于服务器的监听和接收客户端连接。

ServerSocket示例

下面是一个简单的Java服务器端示例,使用ServerSocket来接收客户端的请求,并返回一条消息。

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

public class SimpleServer {
    public static void main(String[] args) {
        // 监听端口
        int port = 12345;
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("服务器正在监听端口: " + port);

            // 阻塞等待客户端连接
            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println("客户端连接: " + socket.getInetAddress());

                // 处理客户端请求
                new ClientHandler(socket).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class ClientHandler extends Thread {
    private Socket socket;

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

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

            String message;
            while ((message = in.readLine()) != null) {
                System.out.println("收到消息: " + message);
                out.println("服务器回应: " + message);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

以上代码创建了一个简单的服务器,它监听端口12345,接受客户端的连接请求。当有客户端连接时,服务器会创建一个新的线程(ClientHandler)来处理该连接。客户端发来的每条消息都会被服务器接收,并返回一个响应。

客户端示例

接下来是与上述服务器配合的客户端示例,它会向服务器发送消息,并接收服务器的回应。

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

public class SimpleClient {
    public static void main(String[] args) {
        String host = "localhost"; // 服务器地址
        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("你好,服务器!");
            String response = in.readLine();
            System.out.println("服务器回应: " + response);

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

在这个客户端程序中,程序首先通过Socket对象连接到指定的服务器和端口。客户端发送一条消息“你好,服务器!”,然后阻塞等待服务器的回应。

二、总结

网络编程在Java中是一个很强大的特性。通过Socket与ServerSocket,开发者可以很方便地实现复杂的网络应用。这些基本的示例展示了如何使用Java进行简单的TCP/IP通信,未来可以在此基础上扩展,构建更为复杂的网络系统,例如聊天室、文件传输等。

Java的网络编程不仅简化了网络相关的操作,而且也为开发者提供了强大的功能,使得他们能够在多种网络条件下进行有效的通信。在今后的学习中,可以深入研究UDP协议、HTTP请求等更多高级内容。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部