返回顶部
首页 > 资讯 > 精选 >java socket如何接收保证能读完数据
  • 267
分享到

java socket如何接收保证能读完数据

2023-06-25 10:06:06 267人浏览 安东尼
摘要

这篇文章主要介绍java Socket如何接收保证能读完数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!socket接收保证能读完数据//    private s

这篇文章主要介绍java Socket如何接收保证能读完数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

socket接收保证能读完数据

//    private static byte[] readData(InputStream in,byte[] bData) throws ioException{//      int readLength = in.read(bData);//      if(readLength!=bData.length){//          byte[] temp2 = readData(in,new byte[bData.length-readLength]);//          System.arraycopy(temp2, 0, bData, readLength, temp2.length);//          return bData;//      }else{//          return bData;//      }//    }//    private static void readData(InputStream in,byte[] bData) throws IOException{//      readData(in,bData,0,bData.length);//    }//    private static void readData(InputStream in,byte[] bData,int off,int length) throws IOException{//      int readLength = in.read(bData, off, length);//      if(readLength!=length){//          readData(in,bData,readLength+off,length-readLength);//      }//    }//    private static void readData(InputStream in,byte[] bData,int off,int length) throws IOException{////      while(true){//          int readLength = in.read(bData, off, length);//          if(readLength!=length){//              off = readLength+off;//              length = length-readLength;//          }else{//              break;//          }//      }//    }//    private static void readData(InputStream in,byte[] bData,int off,int length) throws IOException{//      int readLength = 0;//      do{//          off = readLength+off;//          length = length-readLength;//          readLength = in.read(bData, off, length);//      }while(readLength!=length);//    }        private static void readData(InputStream in,byte[] bData) throws IOException{        int off = 0;        int length = bData.length;        int readLength = 0;        do{            off = readLength+off;            length = length-readLength;            readLength = in.read(bData, off, length);        }while(readLength!=length);    }

socket接收硬件字节数据并解析

第一次接触这种类型的项目,在处理数据过程中,发现了许多问题,记录一下,加深记忆。

硬件将数据写在一个buffer中,传输过来的是字节。

一开始我们想到的是按照字节流来接收,但是,C语言中,byte类型没有符号位,最大值位255,java中byte类型带有符号位,最大值为127,问题就出现了,当接收到的字节数据超过127时,会取第一位为符号位,后几位补码,取反再加一变成负数。(处理方法后面有写到)

后来想偷懒不处理数据的基础上,考虑用char数组接收。char一共十六位,绝对是可以接收下硬件发来的八位数据的。但是再接收数据的时候,还是出现了问题。在对字节流转变为字符流并保存到char数组中的时候,char类型会自动对数据进行处理。在char类型中,字符所对应的最大十六进制是7F,但硬件传输来的数据存在如0X80,0X8D的情况。当char类型接收到大于7F的数据时,无法处理,字符会变成乱码的格式,数据相对应的也会发生改变。在接收数据的时候就无法正确存储,更别提后期对数据进行正确处理和校验了。放弃。

最终还是要回到byte接收的方向上。和同事讨论了下,对于超过java byte类型的数据,进行相应处理后,存放在Int中,即可保证数据正确性。

处理方法:

对byte数组中的数据进行判断,当为负数时,与0xff相与,并存放在Int数组中,可以保证数据正常

ServerSocket serverSocket;    try { serverSocket = new ServerSocket(9090); System.out.println("***等待客户端连接***"); Socket socket = serverSocket.accept(); InputStream is = socket.getInputStream();    byte[] datas = new byte[500]; int count = is.read(datas);    int[] dataFORMat=new int[500]; for(int i=0;i<datas.length;i++){  if(datas[i]<0){   dataFormat[i]=datas[i]&0xff;  }else{   dataFormat[i]=datas[i];  } }     } catch (IOException e) { e.printStackTrace();     }

以上是“java socket如何接收保证能读完数据”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: java socket如何接收保证能读完数据

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

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

猜你喜欢
  • java socket如何接收保证能读完数据
    这篇文章主要介绍java socket如何接收保证能读完数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!socket接收保证能读完数据//    private s...
    99+
    2023-06-25
  • java socket接收保证能读完数据的实例
    目录socket接收保证能读完数据socket接收硬件字节数据并解析socket接收保证能读完数据 // private static byte[] readData(In...
    99+
    2024-04-02
  • PHP中socket如何接收数据
    在PHP中,可以使用socket函数来接收数据。下面是一个示例代码:```php$socket = socket_create(AF...
    99+
    2023-09-26
    socket PHP
  • MySQL是如何保证数据的完整性
    数据的一致性和完整性对于在线业务的重要性不言而喻,如何保证数据不丢呢?今天我们就探讨下关于数据的完整性和强一致性,MySQL做了哪些改进。 一. MySQL的二阶段提交     在Ora...
    99+
    2022-06-01
    MySQL 数据 MySQL 数据完整性
  • Oracle中的数据完整性如何保证
    在Oracle中,数据完整性可以通过以下几种方式来保证: 主键约束:主键约束是一种在表中唯一标识每条记录的约束,可以确保表中的每...
    99+
    2024-04-09
    Oracle
  • socket传输接收不到数据如何解决
    有几种可能的原因导致无法接收到数据:1. 网络连接问题:检查网络连接是否正常,确保服务器和客户端能够互相通信。2. 端口号问题:确保...
    99+
    2023-09-12
    socket
  • java如何接收json数据
    Java可以通过使用第三方库(如Jackson、Gson等)来接收和解析JSON数据。以下是使用Jackson库来接收JSON数据的...
    99+
    2023-09-22
    java json
  • Java如何利用Socket进行数据读写
    目录利用Socket进行数据读写InetAddress与URLSocket通信UDP通信Socket通信中,持续单向读写的同步问题发送端Socket操作(Socket send)接收...
    99+
    2024-04-02
  • java中UDP如何接收数据
    这篇文章给大家分享的是有关java中UDP如何接收数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程...
    99+
    2023-06-14
  • java如何实时接收数据
    Java可以使用Socket来实现实时接收数据。Socket是一种网络通信协议,可以在不同主机之间传输数据。以下是一个简单的示例代码...
    99+
    2023-08-20
    java
  • Java如何使用Socket正确读取数据姿势
    小编给大家分享一下Java如何使用Socket正确读取数据姿势,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言平时日常开发用得最多是Http通讯,接口调试也比较简单的,也有比较强大的框架支持(OkHttp)。个人平时用到...
    99+
    2023-06-25
  • Teradata如何保证数据的一致性和完整性
    Teradata通过以下方式保证数据的一致性和完整性: ACID事务: Teradata使用ACID(原子性、一致性、隔离性和持...
    99+
    2024-04-09
    Teradata
  • java如何接收tcp协议的数据
    在Java中,可以使用Socket类来接收TCP协议的数据。下面是一个简单的示例:```javaimport java.io.Buf...
    99+
    2023-09-25
    java
  • 打包Java项目,如何保证索引完整性?
    在Java开发中,我们经常需要将项目打包成可执行的jar包或war包,以便于部署和运行。在打包过程中,我们需要考虑到jar包中包含的索引文件是否完整,因为索引文件的完整性直接影响着程序的运行效率和正确性。本文将介绍如何打包Java项目,并...
    99+
    2023-06-18
    索引 打包 缓存
  • cdn如何保证数据同步
    cdn实现数据同步的方法主动进行刷新,并清空缓存,从而在后续的访问中,实现拉取到最新的数据;设置CDN在缓存的时候,缓存key为完整的URI,不忽略参数,可以通过在请求URI后面带上不同的参数,实现拉取到最新的资源;...
    99+
    2024-04-02
  • redis如何保证数据一致
    Redis通过以下方式来保证数据一致性:1. 写操作的原子性:Redis的写操作是原子性的,即对于一个键的写操作要么成功,要么失败,...
    99+
    2023-08-30
    redis
  • redis如何保证热点数据
    redis 通过以下技术措施保证热点数据的存取效率和持久性:数据结构优化:哈希表和跳跃表内存分配优化:内存分片和对象惰性删除持久化策略:rdb 快照和 aof 日志复制和哨兵:复制和哨兵...
    99+
    2024-04-20
    redis 并发访问 数据丢失
  • 云服务器如何保证数据安全性能
    数据备份:云服务器会自动将数据备份到多个位置,以防止数据丢失或损坏。备份可以是定期自动备份或实时备份,以保证数据的安全性和可用性。 数据恢复:如果出现数据丢失或损坏的情况,云服务器会自动尝试恢复数据。如果无法恢复,云服务器会提供快速恢复机...
    99+
    2023-10-27
    性能 服务器 数据
  • 如何在java控制台中接收数据
    如何在java控制台中实现接收数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java从控制台接收一个数字的实例详解功能:从控制台接收一个数实现代码:import&nbs...
    99+
    2023-05-31
    java ava 台中
  • MongoDB如何确保数据完整性
    MongoDB通过以下几种方式来确保数据的完整性: 数据验证规则:MongoDB支持在集合级别设置数据验证规则,可以定义数据的结...
    99+
    2024-05-07
    MongoDB
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作