服务端:
Server.java
package com.nafio.nio1; import java.io.IOException; import java.net.*; import java.nio.*; import java.nio.channels.*; import java.util.*; public class Server { ServerSocketChannel ssc; public void start() { try { Selector selector = Selector.open(); ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.configureBlocking(false); ServerSocket ss = ssc.socket(); InetSocketAddress address = new InetSocketAddress(9988); ss.bind(address); ssc.register(selector, SelectionKey.OP_ACCEPT); System.out.println("服务器_端口注册完毕!"); while (true) { System.out.println("服务端_主循环--------->"); selector.select();//nafio info 这里每次是阻塞的 //System.out.println("测试select阻塞"); Set<SelectionKey> selectionKeys = selector.selectedKeys(); Iterator<SelectionKey> iter = selectionKeys.iterator(); ByteBuffer echoBuffer = ByteBuffer.allocate(20); SocketChannel sc; while (iter.hasNext()) { System.out.println("服务器_测试iteretor包含数量"); SelectionKey key = iter.next(); if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) { ServerSocketChannel subssc = (ServerSocketChannel) key .channel(); sc = subssc.accept(); sc.configureBlocking(false); sc.register(selector, SelectionKey.OP_READ); iter.remove(); System.out.println("服务器_有新连接:" + sc); } else if ((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) { sc = (SocketChannel) key.channel(); while (true) { echoBuffer.clear(); int a; try { a = sc.read(echoBuffer); } catch (Exception e) { e.printStackTrace(); break; } if (a == -1) break; if (a > 0) { byte[] b = echoBuffer.array(); System.out.println("服务器_接收数据<--- " + new String(b)); echoBuffer.flip(); sc.write(echoBuffer); System.out.println("服务器_返回数据---> " + new String(b)); } } sc.close(); System.out.println("服务器_连接结束"); System.out.println("============================="); iter.remove(); } } } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { Server server = new Server(); server.start(); } }
客户端
Client.java
package com.nafio.nio1; import java.io.IOException; import java.net.*; import java.nio.*; import java.nio.channels.*; public class Client { public void start() { try { //SocketAddress address = new InetSocketAddress("localhost",55555); SocketAddress address = new InetSocketAddress("localhost",9988); SocketChannel client=SocketChannel.open(address); client.configureBlocking(false); String a="一二三四五六七八九十"; ByteBuffer buffer=ByteBuffer.allocate(20);//by nafio 20_byte 10_中文 buffer.put(a.getBytes()); buffer.clear(); int d=client.write(buffer); System.out.println("客户端_发送数据---> "+new String(buffer.array())); while(true) { buffer.flip(); int i=client.read(buffer); if(i>0) { byte[] b=buffer.array(); System.out.println("客户端_接收数据---> "+new String(b)); client.close(); System.out.println("客户端_连接关闭!"); break; } } } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { Client client = new Client(); client.start(); } }
相关推荐
总结来说,这个"网络编程(socket、NIO、mina)---demo"涵盖了网络编程的基础与进阶,从基础的Socket通信,到提高性能的NIO,再到高级的Mina框架,这些都是开发分布式系统、网络服务和实时通信应用不可或缺的技术。...
总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。
5. **Java NIO与Mina**:Mina是一个高性能、轻量级的网络应用框架,它利用了Java NIO的特性来构建网络服务。Mina提供了一套高级API,简化了基于NIO的网络编程,包括TCP和UDP协议的支持,以及过滤器链机制,方便实现...
NIO (Non-blocking Input/Output) 和 MINA (Multipurpose Infrastructure for Network Applications) 是Java中用于高性能网络应用的两个重要框架。NIO是Java标准库的一部分,提供了与传统IO(Blocking I/O)不同的I/...
MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、易用的网络应用程序框架,基于Java NIO构建。MINA为开发者提供了高度抽象的API,简化了网络编程的复杂性。MINA支持TCP和UDP协议,适用...
jaca视频教程 jaca游戏服务器端开发 Netty NIO AIO Mina视频教程 课程目录: 一、Netty快速入门教程 01、第一课NIO 02、第二课netty服务端 03、第三课netty客户端 04、第四课netty线程模型源码分析(一) 05、...
Mina,全称为“Java Network Application Architecture”,是一个高度可扩展的网络通信框架,它利用Java NIO(New I/O)API来实现非阻塞I/O,从而提高服务器处理大量并发连接的能力。Mina的目标是简化网络服务开发,...
相比之下,Mina NIO是一种基于Java NIO API的网络通信框架,它利用了多路复用器(Selector)和通道(Channel)的概念,实现了非阻塞I/O。在Mina中,`SocketConnectorSupport.java`可能是一个自定义的连接器支持类,...
【标题】"原创nio socket mina+javascript+flash实现commet长连接网页聊天室"揭示了一个基于Java NIO(Non-blocking I/O)的Socket通信框架Mina与JavaScript、Flash技术结合,实现COMET(Comet是使服务器向浏览器推...
Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和UDP协议的服务器和客户端。 Mina的核心特性在于它提供了高度抽象的API,使得开发者可以专注于业务逻辑,而无需深入理解底层网络编程...
本文介绍了一种基于高性能Java NIO的MINA框架,用以构建高性能的即时通讯系统服务器。MINA框架(Multipurpose Infrastructure for Network Applications)是基于Java NIO设计的网络应用程序框架,其特点是采用松耦合...
MINA(Multipurpose Infrastructure for Network Applications)框架是Apache软件基金会的一个开源项目,它提供了一种高级的、事件驱动的网络应用程序框架,用于简化基于Java的网络编程,特别是使用非阻塞I/O(Non-...
在Mina与Socket通信的实现中,服务端通常使用Mina来创建一个Acceptor,监听特定端口,等待客户端的连接请求。一旦有连接建立,Mina会自动触发相应的事件处理器,开发者可以在其中处理数据读写。以下是一个基本的...
Mina通信框架,全称为Apache MINA,是一个高度可扩展的、基于Java的网络应用程序开发框架。MINA的名字来源于多语言(Multi-purpose Infrastructure for Network Applications),它提供了非阻塞I/O(Non-blocking I/...
在本篇博文中,我们将深入探讨如何利用Apache MINA库实现基于TLS/SSL的NIO(非阻塞I/O)Socket通信。MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。...
apache-mina-2.0.4 架包 源码 学习教程.apache mina是Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序...
MINA是由Trustin Lee设计并维护的一款基于Java NIO的通信框架。NIO(Non-blocking I/O,非阻塞I/O)自Java 1.4版本引入以来,为Java开发者提供了更为高效的I/O操作机制。相较于传统的阻塞I/O模型,NIO能够显著提高...
Apache Mina是一个高性能的网络应用框架,主要用于简化网络服务的开发,如TCP/IP和UDP通信。在Mina中,ByteBuffer的使用是至关重要的,因为它提供了高效的数据读写机制。本篇将深入探讨Java NIO(非阻塞I/O)中的...
Apache Mina是一个强大的网络通信框架,专为基于TCP/IP和UDP/IP协议栈的应用设计。它提供了JAVA对象的序列化和虚拟机内部通信的功能,使得开发者能够迅速构建高性能、高可扩展性的网络应用。Mina的核心特性是其事件...