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*) #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;
}