在做一个课题,目前的状况是android底层(c++写的)信息采集后,将信息装载至json包,通过socket传至android app,进行处理,目前android app解析c++写的json包出现问题,内容乱码,应该是编码的问题,但不知到怎么解决,(传输char数组完全ok)求大神帮助。
贴 实现代码:
服务器端接收(java)代码://这部分代码是网上的代码
InputStream ins = socket.getInputStream();
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while ((t = ins.read(buffer)) != -1) {
// t = ins.read(buffer);//此方法阻塞
System.out.println("第" + ++count + "次接收");
os.write(buffer);
}
System.out.println(os.size());
*/
//第一步,生成Json字符串格式的JSON对象
// JSONObject jsonObject=new JSONObject(os.toString());
客户端socket (c++)代码:
《1》:与服务器连接部分代码
sockfd = socket(AF_INET, SOCK_STREAM, 0);
LOGD("[+]create socket successfully");
if (sockfd == -1) {
perror("套接字创建失败\n");
exit(1);
}
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8821);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
LOGD("[+]configure socket successfully");
res = connect(sockfd, (struct sockaddr *) &servaddr,
sizeof(struct sockaddr));
《2》客户端发送json代码
LOGD("第 %d 次 发送JSon",count);
CollectedApiInfo temp = InfoSender::mCycledBlockingQueue->send();
s = temp.convertToJson();
//在此处添加发送json
int len = sizeof(s);
int result = (int) send(sockfd, s.c_str(), len, 0);
LOGD("send Json successfully");
if (result == -1)
LOGE("[-]send Json error!\r\n");
++count;
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课