网页免费浏览网站,可以自学网站开发,男性问题免费咨询,上海公司网站制作价格目录 1、http协议
#xff08;1#xff09;概念
#xff08;2#xff09;使用的端口
#xff08;3#xff09;长连接和短连接
#xff08;4#xff09;常见web服务器
2、https#xff08;443#xff09;
3、浏览器连接服务器编程 1、http协议
#xff08;超文…目录 1、http协议
1概念
2使用的端口
3长连接和短连接
4常见web服务器
2、https443
3、浏览器连接服务器编程 1、http协议
超文本传输协议80[应用层协议]
1概念
浏览器和web服务器在应用层通信使用的是http协议HTTP协议在传输层使用的是TCP协议浏览器和web服务区三次握手建立连接之后才能发送HTTP请求报文那么服务器收到请求报文之后向浏览器回复http应答报文
2使用的端口
浏览器向服务器发起链接之前需要得到服务器的IP和端口使用TCP协议的程序一般默认使用80端口
3长连接和短连接
服务器与浏览器建立连接之后如果两次以上的请求复用同一个TCP链接就称为长连接如果浏览器发送一次请求报文服务器一次应答就断开下次交互再重新进行三次握手连接就称为短链接长连接更好减少网络中的同步报文也使服务器的响应速度变快
4常见web服务器
Apache IIS Nginx Tomcat
2、https443
加密的比http安全ca证书
报头 空行\r\n 数据
3、浏览器连接服务器编程
#includestdio.h
#includestring.h
#includestdlib.h
#includeunistd.h
#includesys/socket.h
#includenetinet/in.h
#include arpa/inet.hint socket_init();
int main()
{int sockfdsocket_init();if(sockfd-1){printf(sockfd err\n);exit(1);}while(1){struct sockaddr_in caddr;int lensizeof(caddr);int caccept(sockfd,(struct sockaddr*)caddr,len);if(c0){continue;}char buff[1024]{0};int nrecv(c,buff,1023,0);if(n0){close(c);continue;}printf(%s,buff);send(c,ok,2,0);close(c);}}
int socket_init()
{int sockfdsocket(AF_INET,SOCK_STREAM,0);if(sockfd-1){return -1;}struct sockaddr_in saddr;memset(saddr,0,sizeof(saddr));saddr.sin_familyAF_INET;saddr.sin_porthtons(80);saddr.sin_addr.s_addrinet_addr(127.0.0.1);int resbind(sockfd,(struct sockaddr*)saddr,sizeof(saddr));if(res-1){return -1;}reslisten(sockfd,5);if(res-1){return -1;}return sockfd;}回复浏览器必须要满足他的格式
浏览器和服务器连接编程
#includestdio.h
#includestring.h
#includestdlib.h
#includeunistd.h
#includesys/socket.h
#includenetinet/in.h
#include arpa/inet.h
#includefcntl.h#define PATH /home/qqq/c2202/day21int socket_init();
char*get_filename(char buff[])
{char*sstrtok(buff, );if(sNULL){return NULL;}printf(qingqiufangfa:%s,s);sstrtok(buff, );return s;}
int main()
{int sockfdsocket_init();if(sockfd-1){printf(sockfd err\n);exit(1);}while(1){struct sockaddr_in caddr;int lensizeof(caddr);int caccept(sockfd,(struct sockaddr*)caddr,len);if(c0){continue;}char buff[1024]{0};int nrecv(c,buff,1023,0);if(n0){close(c);continue;}printf(%s,buff);char*filenameget_filename(buff);if(filenameNULL){close(c);continue;}char path[256]{PATH};if(strcmp(filename,/)0){strcat(path,index.html);}else{strcat(path,filename);}int fdopen(path,O_RDONLY);if(fd-1){close(c);continue;}int sizelseek(fd,0,SEEK_END);lseek(fd,0,SEEK_SET);char head[128]{http/1.1 200 ok\r\n};strcat(head,Sever: http\r\n);printf(headstrlen(head),Content-Length: %d\r\n,size);strcat(head,\r\n);printf(\n%s,head);send(c,head,strlen(head),0);char date[1024]{0};int num0;while((numread(fd,date,1024))0){send(c,date,num,0);}close(fd);close(c);}}
int socket_init()
{int sockfdsocket(AF_INET,SOCK_STREAM,0);if(sockfd-1){return -1;}struct sockaddr_in saddr;memset(saddr,0,sizeof(saddr));saddr.sin_familyAF_INET;saddr.sin_porthtons(80);saddr.sin_addr.s_addrinet_addr(127.0.0.1);int resbind(sockfd,(struct sockaddr*)saddr,sizeof(saddr));if(res-1){return -1;}reslisten(sockfd,5);if(res-1){return -1;}return sockfd;}