DatagramChannel是可以发送与接收UDP数据包的channel。因为UDP是无连接的网络协议,所以你不能像操作其它channel那样对其读写。你需要发送或接收数据包。
开启DatagramChannel
DatagramChannel channel = DatagramChannel.open(); channel.socket().bind(new InetSocketAddress(9999));
该示例代码开启了一个 DatagramChannel,可以从 9999 这个端口接收数据包。
接收数据包
ByteBuffer buffer = ByteBuffer.allocate(1024); buffer.clear(); channel.receive(buffer);
receive()方法会将所收到数据包中的数据拷贝到指定的buffer中。如果数据包的数据库量超过buffer的容量,多余的数据将被安静地丢弃。
发送数据
// byte[] data = ... ByteBuffer buffer = ByteBuffer.allocate(data.length); buffer.clear(); buffer.put(data); buffer.flip(); channel.send(buffer, new InetSocketAddress("abc.xyz", 80));
该示例代码向“abc.xyz”这个服务器的80端口发送了一些数据(data)。因为UDP不保证数据的传输,所以永远都不会得到数据包是否已被接收的通知。
还可以先指定一个固定的地址,后续都向该地址发送数据,或从该地址接收数据。
channel.connect(new InetSocketAddress("abc.xyz", 80));
channel.read(buffer);
channel.write(buffer);
相关推荐
Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel ...Java NIO系列教程(十) Java NIO DatagramChannel Java NIO系列教程(十一) Pipe Java NIO系列教程(十二) Java NIO与IO
java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...
### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...
Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...
Java NIO(New Input/Output)是Java标准库提供的一种I/O模型,它与传统的 Blocking I/O(IO)相比,提供了更加高效的数据传输方式。在Java NIO中,"新"主要体现在非阻塞和多路复用这两个特性上,这使得NIO更适合于...
10-Java NIO-Channel-DatagramChannel.mp4 11-Java NIO-Channel-分散和聚集.mp4 12-Java NIO-Buffer-概述.mp4 13-Java NIO-Buffer-基本使用.mp4 14-Java NIO-Buffer-三个属性和类型.mp4 17-Java NIO-Buffer-缓冲区分...
Java NIO提供了多种类型的通道,如FileChannel用于文件操作,SocketChannel和ServerSocketChannel用于网络通信,DatagramChannel用于UDP通信。通道可以进行读写操作,并且是非阻塞的,这意味着如果数据未准备好,...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,它为Java应用程序提供了更高效的数据传输方式。传统的Java I/O模型(BIO)在处理大量并发连接时效率较...
Java NIO提供了多种类型的通道,如FileChannel、SocketChannel、DatagramChannel等,分别对应于文件、套接字和UDP通信。 2. **缓冲区(Buffers)**:缓冲区是存储数据的主要对象,所有的I/O操作都是通过缓冲区进行的...
基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现...
### Java NIO 详细教程知识点解析 #### 一、Java NIO 概述 Java NIO(New IO)是Java平台提供的一种新的IO操作模式,它首次出现在Java 1.4版本中,并在后续版本中不断完善。Java NIO 的设计目的是为了克服传统Java ...
java侧起server(NioUdpServer1.java),基于Java Nio的selector 阻塞等候,一个android app(NioUdpClient1文件夹)和一个java程序(UI.java)作为两个client分别向该server发数据,server收到后分别打印收到的消息...
Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的 Blocking I/O(同步阻塞I/O)相对。NIO在Java 1.4版本引入,其设计目标是提供一种更高效、更灵活的I/O操作方式,特别适合处理大量并发连接...
Java NIO提供了多种类型的通道,如FileChannel用于文件操作,SocketChannel用于网络通信,DatagramChannel用于UDP通信等。通道可以同时进行读写操作,并且可以与多个缓冲区进行交互。 2. **缓冲区(Buffer)**: ...