发送socketapi封装(涉及数据格式转换)

首先说说这个api,在windows环境,给本机的某个端口发送socket,然后这个端口已经被一个中间件绑定了,这个中间件就给远程设备发送,然后接受信息,并返回给我。解析信息。就这些!!!
由于就是一个api,思路挺简单的,记录下自己踩过的坑吧。

  1. 推荐一个软件 socketTool ,用这个软件可以很简单的发送socket请求,还可以作为server监控端口,查看收到的socket数据,很方便。
  2. socket发送十六进制和asc码 要求用socket发送十六进制和asc码混编的数据。这个愁坏我了,以前都是写业务系统的,突然整这个,整个人也是懵逼状态,但是,生活要进行,工作必须要继续啊。看一下发的东西

    然后还有个下行命令,也就是结果。看了半天文档才知道发送的是什么。
    直接说坑,发送的是byte字节,但是byte取值范围-128~127,比如0x80就对应了十进制的128,这里发送什么就不知道了。开始的写法是一个list里添加byte,然后一起发送,但是发现明明发的是0x80,接收到的却不是,应该是因为超过127做的处理,最终是 byte[] 数组,直接赋值 128 ,就可以了。提供一个思路吧,遇见问题还是要按情况处理。
  3. 读取不结束 socket返回一个InputStream,byte[] 数组去读取这个流,但是程序就停在这了,也有读取到数据。结果网上查了资料,这里需要加is.available() == 0 来判断是否读完了。具体记不清是从哪个帖子看到了
  4. 解析十六进制数据 返回的数据也是十六进制和asc码混编的格式,还好有说明,然后逐个字节去解析,也能拿到结果。0x12解析到string格式,我就要拿到这个12,Integer.toHexString() 方法就可以直接拿到了,0x01拿到的就是1,而不是01。就是,解析0x81,到了十进制就是129了,但是你解析的是byte,结果前面就是 ffffff81 , 然后用 Integer.toHexString( 0x81 & 0xff) ,进行位与运算,去掉前面的内容就好啦。
  5. 考虑业务 最后一个不算是坑了,贴近业务吧。这个api有个功能是获取设备的使用权,但是已经被占用使用权的设备会报异常,提示已经被使用。但是你自己占用的仍然给这种提示。业务上应该是,你自己获取到了使用权,避免再次获取程序报异常,应该给返回一个获取成功,而不是被使用。

仅作为记录吧。

封装 发送socket api遇到的坑(涉及数据格式转换)相关推荐

  1. Android Socket 发送广播包的那些坑

    转载文章,文章原始出处:http://ticktick.blog.51cto.com/823160/1707858 Socket广播包经常被用于局域网内的两台设备之间互相发现和消息传递,在Androi ...

  2. python封装api linux_python Socket编程-python API 与 Linux Socket API之间的关系

    python socket编程 by SA19225409 地址协议家族 Python 支持 AF_UNIX. AF_NETLINK. AF_TIPC 和 AF_INET 家族 AF_UNIX 基于本 ...

  3. java发红包功能_java封装发送微信红包API功能。

    WeChatRedPack java封装发送微信红包API功能. 1.目前支持两种红包类型 普通 裂变 2.目前对微信红包api的发送增加了金额校验,暂时未对发送频率做限制,后期会使用redis进行限 ...

  4. api有哪些 javasocket_Java Socket编程以及与Linux Socket API关系

    Socket 编程(基于Linux) Socket独立于具体协议的网络编程接口,在ISO模型中,主要位于会话层和传输层之间:在通用的计算机网络五层模型中,主要位于应用层和传输层之间. Linux So ...

  5. api有哪些 javasocket_简单hello/hi程序、分析及Java Socket API与Linux Socket API对比

    1.Socket 定义 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他应 ...

  6. 平台开发——skynet——④socket通信、以及高度封装的socket.channel

    本文目录 预备知识: socket服务端 socket客户端 socket.channel模式(针对客户端) 用 socket.channel 解决问题① 用 socket.channel 解决问题② ...

  7. (四)Asp.net web api中的坑-【api的返回值】

    (四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...

  8. stm32c8t6的can通信实验代码_TCP的连接建立与关闭状态及数据传输通信过程【含有 PHP socket API 测试实验代码】...

    php中文网最新课程 每日17点准时技术干货分享 本文章使用 PHP 代码来测试 TCP 传输层的一个通信过程.TCP/IP 协议关于该协议的详细内容可自行查阅 <>PHP 的 tcp/u ...

  9. 在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议)

    原标题:在C++ Builder中用socket api来写网络通讯程序(同时支持TCP和UDP协议) 原文:  http://www.csdn.net/develop/read_article.as ...

最新文章

  1. R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算
  2. where引导的定语从句与状语从句区别
  3. JavaScript面向对象编程笔记
  4. hdu 2586(LCA的离线做法)
  5. SAP Spartacus的单元测试目录结构
  6. 阿里云双11全球狂欢节 计算资源买买买
  7. LeetCode 361. 轰炸敌人(前缀和DP)
  8. wordpress主题的样式修改
  9. xx是一个类型 这在给定的上下文_#PaperCarrier | CoSeRNN :为你解释序列化与上下文在会话推荐中的作用...
  10. 为什么 Redis 单线程能达到百万+QPS?
  11. 解决springboot jar包冲突
  12. Spring常见面试题总结(超详细回答)
  13. VLAN与Trunk的原理及配置
  14. PhantomJS not found on PATH
  15. Python sum()函数
  16. PhotonServer中PhotonServer.config文件的配置
  17. 前端导出后端文件的方法
  18. angular学习笔记(十四)-$watch(3)
  19. 行路难,行路难,多歧路,今安在?
  20. 达内C语言学习Day(11)

热门文章

  1. php定义指定长度数组,PHP中定义数组时,不需要指定数组的大小。
  2. com.mchange.v2.c3p0.ComboPooledDataSource 报红
  3. 雷帝嘎嘎:可以写汉字的洒水三轮车
  4. 数据挖掘中的指标--分类器中的ROC曲线及相关指标(ROC、AUC、ACC)
  5. 大数据下服装品牌知识挖掘浅析
  6. 硬核内网穿透,NAS变网盘
  7. 关于个人编写企业资源管理软件的思路
  8. 计算机网络体系结构与数据通信(补充):ip地址、域名和url
  9. 什么是基本表?什么是视图?两者的区别和联系是什么?
  10. X64安卓模拟器封包拦截发送工具测试(免代理免网卡)