C++中,如何判断Server端返回的response的值是不是为空,如有2个response,那么如何判断response[0]的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中,如何判断Server端返回的response的值是不是为空,如有2个response,那么如何判断response[0]的值相关的知识,希望对你有一定的参考价值。

参考技术A 先判断接收的数据大小len/sizeof(response的类型)可以得出接收到多少个response数据,再根据大小动态申请内存response = malloc(len),然后memcpy(response, data, len),接下来就可以操作response这个数组了。追问

呃,这个没有错,我想问的是,已知有2个response返回的情况下,而假定response[0]的内容是空的,什么也没有,怎么做判断,从而用来做异常处理用。也就是您以上提到的data不存在的情况。

追答

已知有2个response,那么就拿len的大小跟sizeof(response的类型)*2做对比不就可以了吗?

参考技术B client端 recv()函数 如果跑进来了,查看获取的 len是否为 0;

C++之如何判断大端小端

今天在浏览面经,发现如今的面试已经不仅仅满足于问细节了,而是要求说出思路细节并且要求动手实现。


如何判断大端小端是一道很经典的面试题,通常面试的回答就是通过union的特性来判断,今天,我们就来实现一下。


什么是大端小端

所谓的大端小端就是数据对齐的端模式,也就是计算机中采用的两种常用的字节存储机制,与CPU相关。

举个例子:

0x123456在内存中是怎么存储的呢?

  • 大端模式

低地址---------->高地址
0x12 | 0x34 | 0x56
  • 小端模式

低地址---------->高地址
0x56 | 0x34 | 0x12

如何判断大端小端

方法一 强制类型转换

bool isBigEndian()
{
short a=0x1234;
char b=*(char *)&a;
if(0x12==b) return true;
return false;
}

方法二 利用联合体

bool isBigEndian()
{
union NUM
{
short a;
char b;
}num;

num.a=0x1234;

if(0x12==num.b) return true;
return false;
}













以上是关于C++中,如何判断Server端返回的response的值是不是为空,如有2个response,那么如何判断response[0]的值的主要内容,如果未能解决你的问题,请参考以下文章

SQL sever 查找的结果如何判断是不是为空

SQL sever 查找的结果如何判断是不是为空

QT server服务端如何判断客户端断开连接

C++之如何判断大端小端

c++如何判断文件末尾

C# socket编程时 如何实现server端关闭了能提示Client端