java接受C++通过socket传送过来的数据包,接收之后是个数组,怎么判断里面的内容?
答案:3 悬赏:10 手机版
解决时间 2021-03-25 15:15
- 提问者网友:佞臣
- 2021-03-25 08:57
java接受C++通过socket传送过来的数据包,接收之后是个数组,怎么判断里面的内容?
最佳答案
- 五星知识达人网友:千夜
- 2021-03-25 10:00
1)这个具体要看CRC的算法,你自己去找算法了解,可以容纳1BIT的错误翻转纠正。 这个事系统的协议栈可以直接就处理了,这些 校验和 因为和逻辑没有关系,所以封装在协议栈了,不过貌似有一些方法也可以绕过协议栈(这个太复杂了不说)。
2)传过来的不是数组,网络上到计算机的端口都是帧格式的网络数据,而且都是BIT流信息,你可以一次读取一段区域的BIT流,然后按照你的需求,一点一点的读取解开(这就是二层和三层的协议的作用了。)。追问传过来的是数组,我问过,写C++的那个同事了,他说直接用数组比较,我不会追答你们写C++的同事怎么这么给你说,他到底明不明白,SOCKET走的网络通信,网络中不是自己算计内存,只能序列化成为BIT流进行转发,就是一串01,你只能按照标准或者协议,截取一段长度的01,通过自己写或者其他什么方式反序列化成为一个内存中的对象。
然后比较!!!!
2)传过来的不是数组,网络上到计算机的端口都是帧格式的网络数据,而且都是BIT流信息,你可以一次读取一段区域的BIT流,然后按照你的需求,一点一点的读取解开(这就是二层和三层的协议的作用了。)。追问传过来的是数组,我问过,写C++的那个同事了,他说直接用数组比较,我不会追答你们写C++的同事怎么这么给你说,他到底明不明白,SOCKET走的网络通信,网络中不是自己算计内存,只能序列化成为BIT流进行转发,就是一串01,你只能按照标准或者协议,截取一段长度的01,通过自己写或者其他什么方式反序列化成为一个内存中的对象。
然后比较!!!!
全部回答
- 1楼网友:舍身薄凉客
- 2021-03-25 11:52
socket传送的数据应该和语言无关吧
java从socket的instream读入数据就行了追问数据能接收到,就是怎么处理那些数据,传过来的数组,转换成字符串乱码,写C++的那个同事不用转化成字符串,直接用数组比较,我不知道怎么用数组比较,怎么截取数组中的内容?追答java的instream是byte类型吧,那你就8位8位比较呗
java从socket的instream读入数据就行了追问数据能接收到,就是怎么处理那些数据,传过来的数组,转换成字符串乱码,写C++的那个同事不用转化成字符串,直接用数组比较,我不知道怎么用数组比较,怎么截取数组中的内容?追答java的instream是byte类型吧,那你就8位8位比较呗
- 2楼网友:我住北渡口
- 2021-03-25 10:26
C++数据格式不清楚,如果是到java这边了,肯定是字符串,剩下的就是用java代码将字符串里的特定字段取出来
循环数据,toString(),然后找出"abc" ,indexof就好.追问数据能接收到,就是怎么处理那些数据,传过来的数组,转换成字符串乱码,写C++的那个同事不用转化成字符串,直接用数组比较,我不知道怎么用数组比较,怎么截取数组中的内容?追答乱码是编码格式不正确吧.
循环数据,toString(),然后找出"abc" ,indexof就好.追问数据能接收到,就是怎么处理那些数据,传过来的数组,转换成字符串乱码,写C++的那个同事不用转化成字符串,直接用数组比较,我不知道怎么用数组比较,怎么截取数组中的内容?追答乱码是编码格式不正确吧.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯