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;
}

文章来源地址https://uudwc.com/A/0kj4k

原文地址:https://blog.csdn.net/weixin_44273624/article/details/133351769

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年10月01日 21:38
Linux 常见问题
下一篇 2023年10月01日 22:38