`
young-2017
  • 浏览: 9481 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

BIO实现简单通信

阅读更多
client端
package com.huayang.Bio;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class BioClient {
    public static void main(String[] args) {
        BufferedReader in = null;
        PrintWriter out = null;
        Socket socket = null;

        try {
            socket = new Socket("127.0.0.1", 10001);

            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String s = null;
            out = new PrintWriter(socket.getOutputStream(), true);
            out.println("query time order");
            s = in.readLine();
            System.out.println("接收到服务端消息:" + s);


        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                out.close();
            }
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}



server端:
package com.huayang.Bio;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;


public class BioServer {

    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(10001);
            System.out.println("the time server is start in port : 10001");
            Socket socket = null;
            while (true) {
                socket = serverSocket.accept();
                new Thread(new ServerHandler(socket)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != serverSocket) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }
    }
}


handler:
package com.huayang.Bio;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;

public class ServerHandler implements Runnable {

    private Socket socket;

    public ServerHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        BufferedReader bufferedReader = null;
        PrintWriter out = null;

        try {
            while (true) {
                bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);
                String currentTime = "";
                String body = null;
                body = bufferedReader.readLine();
                if (body == null)
                    break;
                currentTime = "query time order".equalsIgnoreCase(body) ?
                        new Date(System.currentTimeMillis()).toString() : "bad order";
                System.out.println("服务端接收到 query time order 命令 " + currentTime);
                out.println(currentTime);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                out.close();
            }
            if (this.socket != null) {
                try {
                    this.socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
分享到:
评论

相关推荐

    Socket 之 BIO、NIO、Netty 简单实现

    Socket是网络编程中的基础组件,它提供了进程间通信(IPC)和网络通信的能力。...通过阅读《Socket 之 BIO、NIO、Netty 简单实现》的博客,你可以了解如何在Java中实现这些通信模型,从而提升网络服务的性能和可靠性。

    基于java的BIO、NIO、AIO通讯模型代码实现

    压缩包中的文件可能包含了实现这三种通信模型的Java代码示例,通过学习和理解这些代码,你可以更好地掌握Java I/O的运用,并根据需求选择合适的模型。建议从简单的BIO开始,逐步过渡到更复杂的NIO和AIO,理解其工作...

    BIO编程程序详细源代码

    虽然没有提供具体的文件名,但我们可以假设这些文件包含了不同类型的BIO编程示例,可能包括服务器端和客户端的实现,可能有Socket通信、文件读写等常见场景。 **BIO编程的知识点** 1. **阻塞I/O模型**: 在BIO模型...

    Java BIO Socke示例

    在这个"Java BIO Socke示例"中,我们将探讨如何使用Java BIO API来实现简单的Socket通信,以及如何进一步优化处理多客户端连接,通过线程池来提升效率。 首先,让我们从基础的Socket通信开始。在Java中,`java.net....

    基于BIO的Java Socket通信详解

    以下是基于BIO模式实现的一个简单的Socket服务端与Socket客户端进行通信的逻辑: 1. Socket客户端连接到Socket服务端,并发送数据“I am the client N.”; 2. Socket服务端,监听服务端口,并接收客户端请求数据,...

    OpenSSL中文手册之BIO库详解source/sink类型的BIO是数据源

    BIO库的灵活性和可扩展性使得OpenSSL能够轻松地处理各种I/O任务,无论是简单的内存操作,还是复杂的网络加密通信,都可以通过BIO接口高效地实现。对于开发者来说,理解并熟练使用BIO是深入掌握OpenSSL的关键。

    传统BIO编程模型及NIO编程模型源码

    在Netty中,BIO和NIO的源码分析可以帮助我们深入了解底层的I/O机制,理解如何通过Java API实现高效的网络通信。学习这些源码不仅可以提高我们的编程能力,还能让我们在设计和优化网络服务时做出更明智的决策。

    网络通信 netty_io

    【网络通信:Netty、BIO、NIO与AIO详解】 在计算机科学中,网络通信是实现系统间数据交换的关键技术。Java平台提供了多种I/O模型来支持网络通信,包括传统的阻塞I/O(BIO)、非阻塞I/O(NIO)以及异步I/O(AIO)。...

    TMS320C25 DSP 扩展串口通信的实现

    在某些应用场景下,如果DSP上存在空闲的通用I/O引脚,可以通过这些引脚来构建一个简单的串行通信接口。例如,在本案例中,作者使用了C25 DSP上的BIO和XF两个引脚,其中XF作为输出数据线,BIO作为输入数据线。通过...

    bio-nio-aio.zip

    1. 单线程Reactor:所有事件都在一个线程中处理,简单但可能成为性能瓶颈。 2. 多线程Reactor:分为事件注册和事件处理两个线程池,提高了处理效率,但增加了复杂性。 3. 主从Reactor:主Reactor负责事件注册,从...

    异步通信核心简单实现(Java)

    本主题将深入探讨如何使用Java的非阻塞I/O(Non-blocking Input/Output,NIO)包来实现一个简单的异步通信核心,重点关注NIO中的通道(Channel)、通道选择器(Selector)和选择器键(Selector Key)。 1. **Java ...

    使用NIO实现非阻塞socket通信

    本项目利用NIO实现了一个简单的非阻塞socket通信的聊天工具,使得在高并发环境下,服务器能够同时处理多个客户端连接,提高系统性能。 1. **非阻塞I/O**: 在BIO模型中,读写操作是阻塞的,即当没有数据可读或无法...

    java BIO NIO AIO

    Java BIO( Blocking I/O)是一种同步阻塞式的 I/O 模式,即服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理。如果这个连接不做任何事情会造成不必要的线程开销。这种...

    基于nio的简易聊天室

    本项目"基于nio的简易聊天室"旨在通过NIO技术实现一个简单的聊天室服务端和客户端,其特点是有图形用户界面(GUI)供用户交互。 NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。在这...

    java socket Bio Nio example

    Java Socket编程是网络通信的核心部分,它提供了进程间通信(IPC)的能力,使得运行在不同设备上的应用程序可以通过网络...在压缩包中的"Socket"文件可能包含了具体的BIO和NIO的Java实现示例,可以进一步学习和研究。

    aio_bio_nio.rar

    - **BIO**:适用于简单的服务器,如早期的Tomcat服务器,以及需要低延迟、高响应的单线程或少量连接的应用。 - **NIO**:常用于需要处理大量并发连接的服务器,如高并发的Web服务器、聊天服务器等。 - **AIO**:适合...

    BIO,NIO,AIO,Netty面试题.pdf

    - **编程难度**:BIO 的编程相对简单,NIO 和 AIO 的编程较为复杂。 #### 8. Java IO 流的分类 - **按读写单位**: - 字符流:以字符为单位进行读写。 - 字节流:以字节为单位进行读写。 - **按实际IO操作**: ...

    java socket bio 源码

    在本篇讨论中,我们将深入探讨Java Socket BIO的源码实现,特别是在处理多客户端连接和有回包的情况。 首先,我们需要了解Socket的基本概念。Socket是网络通信中的一个端点,它提供了进程间通信的能力,使得两个...

    BIO、NIO、AIO、Netty 、TCP全网最全解析!Netty中提供了哪些线程模型?

    在Netty中,使用NIO或AIO实现的TCP连接,可以结合其线程模型,如EventLoopGroup(事件循环组)和ChannelHandler(通道处理器)等组件,实现高效、可扩展的网络通信。例如,BossGroup处理新的连接请求,WorkerGroup...

    JAVA实现简单RPC框架

    在这个“JAVA实现简单RPC框架”的项目中,我们将探讨如何利用Java的核心特性来构建这样的框架。以下是关键知识点的详细说明: 1. **JDK动态代理**: JDK动态代理是Java提供的一种机制,可以在运行时创建一个实现了...

Global site tag (gtag.js) - Google Analytics