Linux socket 字节序

socket介绍

Linux socket 字节序_第1张图片

字节序

Linux socket 字节序_第2张图片Linux socket 字节序_第3张图片

验证什么字节序

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

字节序转换函数Linux socket 字节序_第4张图片Linux socket 字节序_第5张图片

#include
#include

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地址

Linux socket 字节序_第6张图片Linux socket 字节序_第7张图片Linux socket 字节序_第8张图片Linux socket 字节序_第9张图片

IP地址转换

Linux socket 字节序_第10张图片

#include
#include

int main() {
    char buf[] = "192.168.1.4";
    unsigned int num = 0;
    inet_pton(AF_INET, buf, &num);
    unsigned char* p = (unsigned char*) #
    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;
}

你可能感兴趣的:(Linux,网络编程,Linux编程入门,linux,服务器,网络)