Webserver(4.2)socket通信基础
socket
套接字,与管道类似,应用于网络进程间数据的传递。而管道主要应用于本地进程间的通信
服务器端被动接受连接,一般不会主动发起连接。客户端主动向服务器发起连接。就像一个插座一样。
字节序
小端字节序:整数的低位字节存储在低位地址,整数的高位字节存储在内存的高位地址
目前大部分计算机都用的小端字节序,当然也有例外用的大端字节序。如果不同计算机通信时用的字节序不一样,那么就会出问题
#include<stdio.h>
int main(){
union{
short value;//2字节
char bytes[sizeof(short)];//char[2]
} test;
test.value=0x0102;
if((test.bytes[0]==1)&&(test.bytes[1]==2)){
printf("大端字节序\n");
}else if((test.bytes[0]==2)&&(test.bytes[1]==1)){
printf("小端字节序\n");
}else{
printf("未知\n");
}
return 0;
}
字节序转换函数
htons 转换端口
#include <stdio.h>
#include <arpa/inet.h>
int main(){
//htons
unsigned short a=0x0102;
unsigned short b=htons(a);
printf("a:%x\n",a);
printf("b:%x\n",b);
return 0;
}
htonl 转换IP
#include <stdio.h>
#include <arpa/inet.h>
int main(){
//htons
unsigned short a=0x0102;
unsigned short b=htons(a);
printf("a:%x\n",a);
printf("b:%x\n",b);
//htonl 转换IP
char buf[4]={192,168,1,100};
int num=*(int *)buf;
int sum=htonl(num);
unsigned char *p=(char *)∑
printf("%d %d %d %d\n",*p,*(p+1),*(p+2),*(p+3));
return 0;
}
变成了网络字节序
#include <stdio.h>
#include <arpa/inet.h>
int main(){
//htons
unsigned short a=0x0102;
unsigned short b=htons(a);
printf("a:%x\n",a);
printf("b:%x\n",b);
//htonl 转换IP
char buf[4]={192,168,1,100};
int num=*(int *)buf;
int sum=htonl(num);
unsigned char *p=(char *)∑
printf("%d %d %d %d\n",*p,*(p+1),*(p+2),*(p+3));
//ntohs
unsigned char buf1[4]={1,1,168,192};
int num1=*(int *)buf1;
int sum1=ntohl(num1);
unsigned char *p1=(unsigned char *)&sum1;
printf("%d %d %d %d\n",*p1,*(p1+1),*(p1+2),*(p1+3));
return 0;
}
socket地址
socket是一个结构体,用于封装端口号和IP等信息
IP地址转换
将点分十进制的字符串,转换为一个整数
将网络字节序的IP整数转换成点分十进制的IP字符串
#include<arpa/inet.h>
#include<stdio.h>
int main(){
//创建一个ip字符串
char buf[]="192.168.1.4";
unsigned int num=0;
//将巅峰十进制的IP字符串转换成网络字节序的整数
inet_pton(AF_INET,buf,&num);
unsigned char * p=(unsigned char *)#
printf("%d %d %d %d\n",*p,*(p+1),*(p+2),*(p+3));
//将网络字节序的IP整数转换成点分十进制的IP字符串
char ip[16]="";
const char * str =inet_ntop(AF_INET,&num,ip,16);
printf("%s\n",str);
return 0;
}
TCP通信流程
UDP适合用于实时应用(视频会议、直播),TCP适合可靠性高的应用(文件传输)。UDP在数据传输过程中不可靠,可能会丢失
套接字函数
原文地址:https://blog.csdn.net/qq_43920838/article/details/143558403
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!