java nio网络编程示例
时间: 2023-07-23 16:00:01 浏览: 139
java nio示例代码
以下是一个使用 Java NIO(New I/O)进行网络编程的简单示例:
```java
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class NIOExample {
public static void main(String[] args) throws IOException {
// 创建一个线程池用于处理客户端连接
ExecutorService executor = Executors.newFixedThreadPool(10);
// 创建 ServerSocketChannel 并绑定端口
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.bind(new InetSocketAddress("localhost", 8080));
System.out.println("Server started on port 8080");
while (true) {
// 接受客户端连接
SocketChannel socketChannel = serverSocketChannel.accept();
// 使用线程池处理客户端连接
executor.execute(() -> handleClient(socketChannel));
}
}
private static void handleClient(SocketChannel socketChannel) {
try {
ByteBuffer buffer = ByteBuffer.allocate(1024);
// 读取客户端发送的数据
int bytesRead = socketChannel.read(buffer);
while (bytesRead != -1) {
buffer.flip();
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get());
}
buffer.clear();
bytesRead = socketChannel.read(buffer);
}
// 响应客户端
String response = "Hello from server";
ByteBuffer responseBuffer = ByteBuffer.wrap(response.getBytes());
socketChannel.write(responseBuffer);
// 关闭连接
socketChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个示例创建了一个简单的服务器,监听本地的 8080 端口。当客户端连接时,会使用线程池处理连接,并读取客户端发送的数据。然后,服务器会向客户端发送 "Hello from server" 的响应,并关闭连接。
请注意,这只是一个简单的示例,实际的网络编程可能涉及更复杂的逻辑和处理。
阅读全文