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地址转换
文章来源:https://uudwc.com/A/0kj4k
#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;
}
文章来源地址https://uudwc.com/A/0kj4k