iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于BIO的Java Socket通信详解
  • 192
分享到

基于BIO的Java Socket通信详解

biojavasocket 2023-05-30 17:05:10 192人浏览 八月长安
摘要

Bio,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。基于BIO的通信,S

Bio,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。
基于BIO的通信,Socket服务端会发生阻塞,即在监听过程中每次accept到一个客户端的Socket连接,就要处理这个请求,而此时其他连接过来的客户端只能阻塞等待。可见,这种模式下Socket服务端的处理能力是非常有限的,客户端也只能等待,直到服务端空闲时进行请求的处理。

BIO通信实现

下面基于BIO模式,来实现一个简单的Socket服务端与Socket客户端进行通信的逻辑,对这种通信方式有一个感性的认识。具体逻辑描述如下:
1、Socket客户端连接到Socket服务端,并发送数据“I am the client N.”;
2、Socket服务端,监听服务端口,并接收客户端请求数据,如果请求数据以“I am the client”开头,则响应客户端“I am the server, and you are the Nth client.”;

Socket服务端实现,代码如下所示:

package org.shirdrn.java.communications.bio;  import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;   public class SimpleBiotcpServer extends Thread {         private int port = 8888;      private static int sequence = 0;      public SimpleBioTcpServer(int port) {     this.port = port;   }      @Override   public void run() {     Socket socket = null;     try {       ServerSocket serverSocket = new ServerSocket(this.port);       while(true) {         socket = serverSocket.accept(); // 监听         this.handleMessage(socket); // 处理一个连接过来的客户端请求       }     } catch (IOException e) {       e.printStackTrace();     }   }         private void handleMessage(Socket socket) throws IOException {     InputStream in = socket.getInputStream(); // 流:客户端->服务端(读)     OutputStream out = socket.getOutputStream(); // 流:服务端->客户端(写)     int receiveBytes;     byte[] receiveBuffer = new byte[128];     String clientMessage = "";     if((receiveBytes=in.read(receiveBuffer))!=-1) {       clientMessage = new String(receiveBuffer, 0, receiveBytes);       if(clientMessage.startsWith("I am the client")) {         String serverResponseWords =            "I am the server, and you are the " + (++sequence) + "th client.";         out.write(serverResponseWords.getBytes());       }     }     out.flush();     System.out.println("Server: receives clientMessage->" + clientMessage);   }    public static void main(String[] args) {     SimpleBioTcpServer server = new SimpleBioTcpServer(1983);     server.start();   } } 

--结束END--

本文标题: 基于BIO的Java Socket通信详解

本文链接: https://www.lsjlt.com/news/220137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于BIO的Java Socket通信详解
    BIO,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。基于BIO的通信,S...
    99+
    2023-05-30
    bio java socket
  • Java基于TCP协议的Socket通信
    目录简介TCP简介JAVA Socket简介SocketImpl介绍TCP 编程构造ServerSocket1.1 绑定端口1.2 设定客户连接请求队列的长度1.3 设定绑定的IP ...
    99+
    2024-04-02
  • C#基于Socket的网络通信类你了解吗
    目录摘要代码总结摘要 之所以要进行Socket套接字通信库封装,主要是直接使用套接字进行网络通信编程相对复杂,特别对于初学者而言。实际上微软从.net 2.0开始已经提供了TCP、U...
    99+
    2024-04-02
  • 详解Java Socket通信封装MIna框架
    目录核心类各个击破IoServiceIoFilterIoHandler总结核心类 IoService :Mina中将服务端和客户端都看成是服务,这里提供统一接口IoService,这...
    99+
    2024-04-02
  • java与as3的socket通信
    as3 与java 都提供了Socket类用于网络通信, 但两者的使用也有较大的不同. 为了方便两者的通信, 我在做了一些实验的基础上, 写下获得的经验,以免忘记.as3 的socket 读写数据方法常用的有四个: readUTF, wri...
    99+
    2023-01-31
    通信 java socket
  • C#基于Socket套接字的网络通信封装
    本文为大家分享了C#基于Socket套接字的网络通信封装代码,供大家参考,具体内容如下 摘要 之所以要进行Socket套接字通信库封装,主要是直接使用套接字进行网络通信编程相对复杂,...
    99+
    2024-04-02
  • C#基于Socket的TCP通信实现聊天室案例
    本文实例为大家分享了C#基于Socket的TCP通信实现聊天室的具体代码,供大家参考,具体内容如下 一、Socket(套接字)通信概念 套接字(socket)是通信的基石,用于描述I...
    99+
    2024-04-02
  • 如何使用C#基于Socket的TCP通信实现聊天室
    这篇文章给大家分享的是有关如何使用C#基于Socket的TCP通信实现聊天室的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下一.Socket(套接字)通信概念套接字(socket)是通信的基石,用于描述...
    99+
    2023-06-29
  • C++基于boostasio实现synctcpserver通信流程详解
    目录一.功能介绍二.string类型数据交互2.1 程序源码2.2 编译&&执行2.3 程序执行结果三.byte类型数据交互3.1 程序源码3.2 编译&&a...
    99+
    2024-04-02
  • 实时通信Socket io的使用示例详解
    目录引言1、什么是socket.io2、socket.io的使用3、客户端自带事件4、版本问题引言 最近在工作中,遇到了一个需求,需要和后台服务实时通信,获取各种设备的实时状态、以及...
    99+
    2022-11-16
    Socket io实时通信 Socket io
  • Java使用Socket简单通讯详解
    目录Java实现基于Socket的简单通信 一.ServerSocket1.使用JavaFX写的小界面,方便观察客户端连接情况2.创建ServerSocket并处理客户端连...
    99+
    2024-04-02
  • C#如何实现基于Socket套接字的网络通信封装
    小编给大家分享一下C#如何实现基于Socket套接字的网络通信封装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!摘要之所以要进行Socket套接字通信库封装,主要...
    99+
    2023-06-21
  • Java NIO Socket通信的方法是什么
    这篇文章主要讲解了“Java NIO Socket通信的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java NIO Socket通信的方法是什么”吧!服务器代码:import&...
    99+
    2023-06-17
  • Java Socket通讯如何进行客户端的信息通信
    本篇文章为大家展示了Java Socket通讯如何进行客户端的信息通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java Socket通讯在实际的使用中有很多关键代码需要我们学习,那么首先我们就...
    99+
    2023-06-17
  • Java中socket通信的原理是什么
    Java中socket通信的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java.net.Socket继承于java.lang.Object,有八个...
    99+
    2023-06-17
  • 基于Java实现Socket编程的方法
    这篇文章主要介绍“基于Java实现Socket编程的方法”,在日常操作中,相信很多人在基于Java实现Socket编程的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Java实现Socket编程的方法...
    99+
    2023-06-29
  • Python基于socket如何实现TCP/IP客户和服务器通信
    这篇文章主要为大家展示了“Python基于socket如何实现TCP/IP客户和服务器通信”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python基于socket如何实现TCP/IP客户和服务...
    99+
    2023-06-15
  • JavaNIO通信基础示例详解
    目录Java NIO 通信基础介绍NIO 和 OIO 的对比使用 FileChannel 完成文件复制的实践案例使用 DatagramChannel 数据包通道发送数据的实践案例使用...
    99+
    2022-12-26
    Java NIO通信基础 Java NIO
  • 基于Qt的TCP实现通信
    本文实例为大家分享了基于Qt的TCP实现通信的具体代码,供大家参考,具体内容如下 一、tcp介绍 TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色:服务...
    99+
    2024-04-02
  • 基于STM32F103C8T6的HC-06蓝牙通信
    文章目录 前言 注意看 !一、蓝牙通信流程二、怎么实现蓝牙通信1.了解蓝牙模块功能2.了解蓝牙通信本质3.进行AT命令调试4.调试完成,连接通信 三、结尾 前言 注意看 ! 如果朋友...
    99+
    2023-09-04
    stm32 单片机 arm 模块测试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作