返回
Java BIO网络编程指南:从入门到实践
见解分享
2023-11-30 00:07:43
前言
在计算机网络中,网络编程是指在计算机之间通过网络进行通信的编程。网络编程可以分为两大类:阻塞式网络编程(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();
}
}
运行示例
- 运行服务器端Socket程序。
- 运行客户端Socket程序。
- 在客户端Socket程序中输入数据并发送。
- 在服务器端Socket程序中可以看到客户端Socket发送的数据。
总结
本文介绍了Java BIO网络编程的基础,并通过一个简单的例子演示了如何使用Java Socket实现BIO网络编程。