Linux socket 字节序

socket介绍

字节序

验证什么字节序

#include<stdio.h>
int main() {
    union 
    {
        short value;
        char btypes[sizeof(short)];
    } test;
    test.value = 0x0102;
    if(test.btypes[0] == 1 && test.btypes[1] == 2) {
        printf("大端字节序\n");
    }else{
        printf("小端字节序\n");
    }

    return 0;
}

字节序转换函数

#include<stdio.h>
#include<arpa/inet.h>

int main() {
    unsigned short a = 0x0102;
    unsigned short at = htons(a);
    printf("a: %x\n", a);
    printf("b: %x\n", at);

    char buf[4] = {192, 168, 1, 100};
    int num = *(int*)buf;
    printf("%x\n", num);
    unsigned int num_ts = htonl(num);
    unsigned char *p = (char*)&num_ts;
    printf("%d %d %d %d", *p, *(p+1), *(p+2), *(p+3));
    return 0;
}

socket地址

IP地址转换

#include<stdio.h>
#include<arpa/inet.h>

int main() {
    char buf[] = "192.168.1.4";
    unsigned int num = 0;
    inet_pton(AF_INET, buf, &num);
    unsigned char* p = (unsigned char*) &num;
    printf("%d %d %d %d\n", *p, *(p + 1), *(p + 2), *(p + 3));

    char ip[16] = "";
    const char * str = inet_ntop(AF_INET, &num, ip, 16);
    printf("%s\n", str);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值