返回

Java BIO网络编程指南:从入门到实践

见解分享

前言

在计算机网络中,网络编程是指在计算机之间通过网络进行通信的编程。网络编程可以分为两大类:阻塞式网络编程(BIO)和非阻塞式网络编程(NIO)。BIO是阻塞式网络编程,NIO是非阻塞式网络编程。

Java BIO网络编程基础

Java BIO网络编程的基础是Java Socket。Socket是一个抽象类,它表示一个网络连接的端点。Socket可以是客户端Socket,也可以是服务端Socket。客户端Socket用来连接到服务端Socket,服务端Socket用来接受客户端Socket的连接。

Java BIO网络编程示例

为了演示如何使用Java Socket实现BIO网络编程,我们创建一个简单的例子。在这个例子中,我们将创建一个服务器端Socket和一个客户端Socket。服务器端Socket用来监听客户端Socket的连接,客户端Socket用来连接到服务器端Socket并发送数据。

服务器端Socket代码

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

public class Server {

    public static void main(String[] args) throws IOException {
        // 创建一个服务器端Socket,并监听8888端口
        ServerSocket serverSocket = new ServerSocket(8888);

        // 循环监听客户端Socket的连接
        while (true) {
            // 接受客户端Socket的连接
            Socket clientSocket = serverSocket.accept();

            // 创建一个输入流,用来读取客户端Socket发送的数据
            InputStream inputStream = clientSocket.getInputStream();

            // 创建一个输出流,用来向客户端Socket发送数据
            OutputStream outputStream = clientSocket.getOutputStream();

            // 读取客户端Socket发送的数据
            byte[] data = new byte[1024];
            int length = inputStream.read(data);

            // 将客户端Socket发送的数据原样返回给客户端Socket
            outputStream.write(data, 0, length);

            // 关闭客户端Socket
            clientSocket.close();
        }

        // 关闭服务器端Socket
        serverSocket.close();
    }
}

客户端Socket代码

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

public class Client {

    public static void main(String[] args) throws IOException {
        // 创建一个客户端Socket,并连接到8888端口
        Socket clientSocket = new Socket("localhost", 8888);

        // 创建一个输入流,用来读取服务器端Socket发送的数据
        InputStream inputStream = clientSocket.getInputStream();

        // 创建一个输出流,用来向服务器端Socket发送数据
        OutputStream outputStream = clientSocket.getOutputStream();

        // 向服务器端Socket发送数据
        String data = "Hello, server!";
        outputStream.write(data.getBytes());

        // 读取服务器端Socket发送的数据
        byte[] data = new byte[1024];
        int length = inputStream.read(data);

        // 打印服务器端Socket发送的数据
        System.out.println(new String(data, 0, length));

        // 关闭客户端Socket
        clientSocket.close();
    }
}

运行示例

  1. 运行服务器端Socket程序。
  2. 运行客户端Socket程序。
  3. 在客户端Socket程序中输入数据并发送。
  4. 在服务器端Socket程序中可以看到客户端Socket发送的数据。

总结

本文介绍了Java BIO网络编程的基础,并通过一个简单的例子演示了如何使用Java Socket实现BIO网络编程。