`
zzc1684
  • 浏览: 1230960 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

nio/mina(一) nio基本通信

    博客分类:
  • Mina
阅读更多

服务端:

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)---demo"涵盖了网络编程的基础与进阶,从基础的Socket通信,到提高性能的NIO,再到高级的Mina框架,这些都是开发分布式系统、网络服务和实时通信应用不可或缺的技术。...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。

    nio.rar_NIO_java nio_java_nio_mina java n

    5. **Java NIO与Mina**:Mina是一个高性能、轻量级的网络应用框架,它利用了Java NIO的特性来构建网络服务。Mina提供了一套高级API,简化了基于NIO的网络编程,包括TCP和UDP协议的支持,以及过滤器链机制,方便实现...

    NIO_MINA学习例子_源代码

    NIO (Non-blocking Input/Output) 和 MINA (Multipurpose Infrastructure for Network Applications) 是Java中用于高性能网络应用的两个重要框架。NIO是Java标准库的一部分,提供了与传统IO(Blocking I/O)不同的I/...

    Java_nio&mina技术调研报告

    MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、易用的网络应用程序框架,基于Java NIO构建。MINA为开发者提供了高度抽象的API,简化了网络编程的复杂性。MINA支持TCP和UDP协议,适用...

    Java视频教程 Java游戏服务器端开发 Netty NIO AIO Mina视频教程

    jaca视频教程 jaca游戏服务器端开发 Netty NIO AIO Mina视频教程 课程目录: 一、Netty快速入门教程 01、第一课NIO 02、第二课netty服务端 03、第三课netty客户端 04、第四课netty线程模型源码分析(一) 05、...

    Mina NIO Socket

    Mina,全称为“Java Network Application Architecture”,是一个高度可扩展的网络通信框架,它利用Java NIO(New I/O)API来实现非阻塞I/O,从而提高服务器处理大量并发连接的能力。Mina的目标是简化网络服务开发,...

    一般Socket客户端与Mina NIO Socket客户端对比示例

    相比之下,Mina NIO是一种基于Java NIO API的网络通信框架,它利用了多路复用器(Selector)和通道(Channel)的概念,实现了非阻塞I/O。在Mina中,`SocketConnectorSupport.java`可能是一个自定义的连接器支持类,...

    原创nio socket mina+javascript+flash实现commet长连接网页聊天室

    【标题】"原创nio socket mina+javascript+flash实现commet长连接网页聊天室"揭示了一个基于Java NIO(Non-blocking I/O)的Socket通信框架Mina与JavaScript、Flash技术结合,实现COMET(Comet是使服务器向浏览器推...

    练练手,用mina2.0搭建一个nio客户端

    Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和UDP协议的服务器和客户端。 Mina的核心特性在于它提供了高度抽象的API,使得开发者可以专注于业务逻辑,而无需深入理解底层网络编程...

    基于高性能NIO的MINA框架的应用

    本文介绍了一种基于高性能Java NIO的MINA框架,用以构建高性能的即时通讯系统服务器。MINA框架(Multipurpose Infrastructure for Network Applications)是基于Java NIO设计的网络应用程序框架,其特点是采用松耦合...

    mina框架--MINA框架是对java的NIO包的一个封装

    MINA(Multipurpose Infrastructure for Network Applications)框架是Apache软件基金会的一个开源项目,它提供了一种高级的、事件驱动的网络应用程序框架,用于简化基于Java的网络编程,特别是使用非阻塞I/O(Non-...

    Mina+Socket通信

    在Mina与Socket通信的实现中,服务端通常使用Mina来创建一个Acceptor,监听特定端口,等待客户端的连接请求。一旦有连接建立,Mina会自动触发相应的事件处理器,开发者可以在其中处理数据读写。以下是一个基本的...

    Mina通信框架应用示例

    Mina通信框架,全称为Apache MINA,是一个高度可扩展的、基于Java的网络应用程序开发框架。MINA的名字来源于多语言(Multi-purpose Infrastructure for Network Applications),它提供了非阻塞I/O(Non-blocking I/...

    基于 MINA 的 TLS/SSL NIO Socket 实现(二)

    在本篇博文中,我们将深入探讨如何利用Apache MINA库实现基于TLS/SSL的NIO(非阻塞I/O)Socket通信。MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。...

    apache-mina-2.0.4架包及源码各pdf学习教程

    apache-mina-2.0.4 架包 源码 学习教程.apache mina是Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序...

    基于MINA构建高性能的NIO应用

    MINA是由Trustin Lee设计并维护的一款基于Java NIO的通信框架。NIO(Non-blocking I/O,非阻塞I/O)自Java 1.4版本引入以来,为Java开发者提供了更为高效的I/O操作机制。相较于传统的阻塞I/O模型,NIO能够显著提高...

    深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

    Apache Mina是一个高性能的网络应用框架,主要用于简化网络服务的开发,如TCP/IP和UDP通信。在Mina中,ByteBuffer的使用是至关重要的,因为它提供了高效的数据读写机制。本篇将深入探讨Java NIO(非阻塞I/O)中的...

    java-mina通信框架详解.docx

    Apache Mina是一个强大的网络通信框架,专为基于TCP/IP和UDP/IP协议栈的应用设计。它提供了JAVA对象的序列化和虚拟机内部通信的功能,使得开发者能够迅速构建高性能、高可扩展性的网络应用。Mina的核心特性是其事件...

Global site tag (gtag.js) - Google Analytics