1. 服务端
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.util.Set;
public class NioUdpServer {
public static void main(String[] args) {
try {
Selector selector = Selector.open();
DatagramChannel channel = DatagramChannel.open();
channel.configureBlocking(false);
DatagramSocket socket = channel.socket();
socket.bind(new InetSocketAddress(1000));
channel.register(selector, SelectionKey.OP_READ);
ByteBuffer receiveBuffer = ByteBuffer.allocate(1024);
final int PACKAGE_SIZE = 10;
while(true){
int n = selector.select();
if(n == 0){
continue;
}
Set<SelectionKey> readyKeys = selector.selectedKeys();
for(SelectionKey key : readyKeys){
readyKeys.remove(key);
if(key.isReadable()){
DatagramChannel dc = (DatagramChannel)key.channel();
InetSocketAddress client = (InetSocketAddress)dc.receive(receiveBuffer); //接收来自任意一个Client的数据报
key.interestOps(SelectionKey.OP_READ);
System.out.println("client ----> IP: " + client.getAddress().getHostAddress() + ", port: " + client.getPort());
System.out.println("receiveBuffer.position() = " + receiveBuffer.position());
if(receiveBuffer.position() >= PACKAGE_SIZE){
receiveBuffer.flip();
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(receiveBuffer.array()));
System.out.println(dis.readInt());
BufferedReader d = new BufferedReader(new InputStreamReader(dis));
System.out.println(d.readLine());
receiveBuffer.clear();
}else{
dc.register(selector, SelectionKey.OP_READ);
}
}//if
}
}//while
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 客户端可以使用《Java网络编程二 UDP通信》中的客户端连接测试
分享到:
相关推荐
读书笔记:C#网络编程与JAVA网络通信。TCP, UDP的Socket编程多线程阻塞非阻塞等。
此外,Java NIO(New Input/Output)是另一个重要的主题,它是Java 1.4引入的新特性,提供了非阻塞I/O操作,能够显著提升性能。NIO基于通道(Channel)和选择器(Selector),使得程序可以同时处理多个连接,适用于...
4. **NIO(非阻塞I/O)**:Java的NIO库提供了选择器和通道的概念,使得程序可以同时处理多个连接,提高并发性能。Selector用于监听多个Channel,而Channel则连接到网络套接字或其他I/O源。 5. **HTTPClient**:Java...
- **NIO(非阻塞I/O)**:Java的NIO库提供了更高效的网络编程模型,适用于高并发场景。 - **异步I/O(AIO)**:Java NIO.2引入了异步I/O,允许非阻塞读写操作。 通过阅读《Java网络编程》第三版,开发者可以系统...
在Java中,网络编程主要依赖于Java的Socket编程、ServerSocket、URL类以及NIO(非阻塞I/O)等核心API。这份"Java网络编程期末考试复习题库+答案"为学生提供了全面的复习资源,涵盖了Java网络编程的主要知识点。 1. ...
Java UDP套接字网络编程是Java编程领域中的一个重要部分,主要涉及如何利用Java的Socket类库来实现基于用户数据报协议(User Datagram Protocol)的通信。UDP是一种无连接的、不可靠的传输协议,适用于对实时性要求...
1. **Java网络编程基础**:首先,书中会介绍Java中的Socket编程,包括TCP和UDP协议的基础知识,以及如何使用Java的Socket和ServerSocket类创建客户端和服务器端的连接。 2. **I/O与NIO**:Java的I/O流系统是网络...
Java网络编程是开发分布式应用程序的关键技术,它使得Java程序能够与其他设备、系统和服务进行通信。本书《Java网络编程实例:Java网络编程实例》显然聚焦于通过实际案例来教授这一核心技能。以下是一些主要的知识点...
- **NIO(非阻塞I/O)**:Java的新I/O API提供了选择器(Selector)和通道(Channel),能实现高效的异步I/O操作。 - **HTTP通信**:使用HttpURLConnection或第三方库(如Apache HttpClient)实现HTTP客户端和...
05-1-Java非阻塞通信2016版.ppt和05-2-非阻塞HTTP服务器2016版.ppt聚焦于Java的非阻塞I/O(NIO),这是高性能网络编程的重要组成部分。非阻塞I/O允许程序在等待数据时执行其他任务,提高了系统资源的利用率,特别...
第四版还涵盖了非阻塞I/O(NIO)和选择器,这是高性能网络服务器开发的关键技术。 8. **实战示例**:书中包含了大量的代码示例,帮助读者理解理论知识并将其应用于实际项目。这些示例涵盖从简单的“Hello, World!”...
此外,Java NIO(New I/O)提供了一种非阻塞的I/O模型,能有效提升网络通信的效率,这部分也是本书的重要内容。 六、网络安全与性能优化 网络编程还涉及到安全问题,如加密通信、身份验证等。书中可能会讨论SSL/TLS...
4. **异步网络编程**:介绍Java NIO(非阻塞I/O)和AIO(异步I/O),这两种技术可以显著提高网络应用的性能,特别是在高并发场景下。 5. **网络协议处理**:讲解HTTP、HTTPS、FTP等常用网络协议,以及如何在Java中...
Java网络编程是Java开发中的重要领域,它涵盖了通过网络连接进行数据传输和通信的各种技术和方法。本教程将深入探讨如何利用Java进行高效且可靠的网络编程。 一、Java网络编程基础 Java提供了丰富的API来支持网络...
5. **NIO(非阻塞I/O)**:Java NIO提供了选择器(Selector)、通道(Channel)和缓冲区(Buffer)等机制,可以提高网络编程的效率。源码中可能会有NIO相关的例子,如使用Selector监听多个Socket通道的事件。 6. **...
此外,NIO(非阻塞I/O)在Java网络编程中是一个重要的优化手段。传统的Java I/O基于阻塞模型,而NIO引入了选择器和通道的概念,可以同时处理多个连接,提高了系统的并发性能。`java.nio`包下的`Selector`、`...
《JAVA网络编程大全》是一本全面且深入介绍Java网络编程技术的权威著作,旨在帮助读者掌握Java在构建网络应用程序中的核心概念和实践技巧。PDF版的书籍为学习者提供了便捷的电子阅读体验,随时随地都能深化对Java...
Java网络编程中的UDP(User Datagram ...在实际开发中,如果需要实现更复杂的功能,例如多线程处理多个客户端请求,或者添加身份验证、加密等安全措施,可以结合Java的多线程、NIO(非阻塞I/O)以及网络安全库来实现。
Java网络编程是软件开发中的重要领域,特别是在构建分布式系统和实时通信应用时。TCP(传输控制协议)和UDP(用户数据报协议)是网络通信中两种主要的传输层协议,它们各自具有不同的特点和应用场景。在Java中,通过...
5. **NIO(非阻塞I/O)**:JAVA的New IO API提供了选择器(Selector)和通道(Channel)等机制,使得程序可以同时监控多个输入/输出流,提高了并发性能。 6. **HTTP协议**:JAVA可以通过HttpURLConnection或...