DatagramChannel 是处理UDP协议
1. server
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.charset.Charset;
public class DatagramServer {
public static void main(String[] args) throws Exception {
DatagramChannel channel = DatagramChannel.open();
channel.socket().bind(new InetSocketAddress(1234));
ByteBuffer bf = ByteBuffer.allocate(1024);
while (true) {
System.out.println("listening ... ");
SocketAddress remoteAddress = channel.receive(bf);
new DealClientThread(channel, remoteAddress, bf);
}
}
}
class DealClientThread implements Runnable {
private DatagramChannel channel;
private SocketAddress remoteAddress;
private ByteBuffer bf;
public DealClientThread(DatagramChannel channel,
SocketAddress remoteAddress, ByteBuffer bf) {
this.channel = channel;
this.remoteAddress = remoteAddress;
this.bf = bf;
new Thread(this).start();
}
public void run() {
try {
// reveive
bf.flip();
String receivedString = Charset.forName("UTF-8").newDecoder()
.decode(bf).toString();
System.out.println("Receivet client " + remoteAddress.toString()
+ " message: " + receivedString);
// send
String sendString = "Hi, client(" + remoteAddress.toString()
+ ") I had receive your message.";
ByteBuffer bfSend = ByteBuffer.wrap(sendString.getBytes("UTF-8"));
channel.send(bfSend, remoteAddress);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
2. client
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.charset.Charset;
import java.util.Date;
public class DatagramClient {
public static void main(String[] args) throws Exception {
// send
DatagramChannel channel = DatagramChannel.open();
String sendString = "Hi, server. @" + new Date().toString();
ByteBuffer sendBuffer = ByteBuffer.wrap(sendString.getBytes("UTF-8"));
channel.send(sendBuffer, new InetSocketAddress("127.0.0.1", 1234));
System.out.println("Send message to server end");
// receive
ByteBuffer receiveBuffer = ByteBuffer.allocate(80);
SocketAddress remoteAddress = channel.receive(receiveBuffer);
receiveBuffer.flip();
String receivedString = Charset.forName("UTF-8").newDecoder()
.decode(receiveBuffer).toString();
System.out.println("Receive message from " + remoteAddress.toString()
+ " server: " + receivedString);
}
}
分享到:
相关推荐
NULL 博文链接:https://b-l-east.iteye.com/blog/1254693
为了最大程度地从这里的讨论中获益,您应该理解基本的 Java 编程概念,如类、继承和使用包。多少熟悉一些原来的 I/O 库(来自 java.io.* 包)也会有所帮助。 虽然本教程要求掌握 Java 语言的工作词汇和概念,但是不...
主要是一些关于NIO2的基本操作和内容,内容是网上下载的收集的,适合没有使用过JDK7以上版本或没有使用过新的文件操作的规范的新手。
用Java实现非阻塞通信 ,用ServerSocket和Socket来编写服务器程序和客户程序,是Java网络编程的最基本的方式。 httpcore-nio-4.3.jar包
本文主要简单介绍NIO的基本原理,在下一篇文章中,将结合Reactor模式和著名线程大师Doug Lea的一篇文章深入讨论。 NIO主要原理和适用。 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的...
01-Java NIO-课程简介.mp4 02-Java NIO-概述.mp4 03-Java NIO-Channel-概述.mp4 ...13-Java NIO-Buffer-基本使用.mp4 14-Java NIO-Buffer-三个属性和类型.mp4 15-Java NIO-Buffer-分配和读写数据.mp4
NIO用于高性能Socket编程由来已久,网络也有较为丰富的原理和源代码。我这里主要介绍几点经验总结: ...本文粘贴多线程在NIO环境下的基本运用示例代码,同时演示了一个线程如何对多个连接进行读写的操作。
java nio 相关 ppt,介绍了 java nio 的基本概念以及和其他 io 的区别
13-Java NIO-Buffer-基本使用.mp4 14-Java NIO-Buffer-三个属性和类型.mp4 17-Java NIO-Buffer-缓冲区分片.mp4 18-Java NIO-Buffer-只读缓冲区.mp4 19-Java NIO-Buffer-直接缓冲区.mp4 21-Java NIO-Selector-概述....
nio_proxy 基本的 nio 代理
这是学习Java NIO过程中总结的核心概念,里面包含了基本的知识点,详细知识点也可以查看我的博客:pcwl_java里的Java NIO篇
NULL 博文链接:https://zhangshixi.iteye.com/blog/679959
java NIO的基本知识点学习笔记,不包含具体代码
Java NIO 源码适合初学者,里面包括通道和Buffer的基本适用,以及文件锁,和内存文件映射等等
IO 是面向流的,NIO 是面向缓冲区的 IO 流是阻塞的,NIO 流是不阻塞的 IO 没有选择器,NIO 有选择器 从编程模式上来看AIO相对于NIO的区别在于,NIO需要使用者线程不停的轮询IO对象,来确定是否有数据准备好...
包含NIO核心概念、基本文件读写、缓冲区内部实现机制、异步IO、缓冲区更多特性探究、文件锁与字符集
java snmp 源码 Java NIO java nio 简介 Java NIO(New IO)是用于Java(来自Java ...NIO提供了与原来IO ...NIO支持面向缓冲区的,基于通道的IO操作。...NIO将以更加高效的方式进行文件的读写操作。...Buffer的基本使用 通过allo
其中包括详细的文档以及有关基本机器人构建的分步指南。 功能包括对以下各项的现成支持: Bot命令 SQLite3和Postgres数据库后端 配置文件 多级日志记录 码头工人 参加端到端加密房间 使用nio-template的项目 一个...
java.util.concurrent、linux基本操作、NIO(同步、非阻塞)-Channel(通道)、Buffer(缓冲区)、Selector(选择器)
第3章,结合905.4-2014协议的基本内容,动手实现NIO长连接服务端的实现,以及协议内容的设计和实现思路; 第4章,实现长连接客户端,以及采用多线程技术进行系统性能测试; 第5章,介绍Netty相关基础知识,并使用...