日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

自己动手写web服务器一(浏览器的访问信息)

發(fā)布時(shí)間:2025/3/20 HTML 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自己动手写web服务器一(浏览器的访问信息) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
要協(xié)議一個(gè)web服務(wù)器,需要了解http協(xié)議,下面我們來(lái)看一下當(dāng)瀏覽器請(qǐng)求網(wǎng)張的時(shí)候向web服務(wù)器發(fā)送的數(shù)據(jù),我使用的是ubuntu 中telent展現(xiàn)一個(gè)下過(guò)程。我需要一個(gè)簡(jiǎn)單的網(wǎng)站來(lái)演示一下,我裝了一個(gè)apache。來(lái)完成成這個(gè)過(guò)程。下面為過(guò)程展示。 其實(shí),訪(fǎng)問(wèn)一個(gè)網(wǎng)站就是瀏覽器web服務(wù)器指定端口發(fā)送信息,然后,web服務(wù)器向?yàn)g覽器發(fā)送網(wǎng)頁(yè)的內(nèi)容,1。使用telnet連接網(wǎng)站

2.輸入請(qǐng)求的頁(yè)面。 GET? /?? HTTP/1.0 或者 GET /index.html? HTTP/1.0

?? get:表示使用的get方法來(lái)獲取網(wǎng)站的內(nèi)容了

??? /:表示請(qǐng)求的為根目錄,默認(rèn)文件(有網(wǎng)站的配置文件決定)。 /index.html表示網(wǎng)站根目錄下的index.html文件

? HTTP/1.0:表示使用的是HTTP1.0的協(xié)議

三個(gè)參數(shù)用空格分開(kāi)

3.apache返回的結(jié)果

上面是一個(gè)http協(xié)議一個(gè)交互的協(xié)議,如果要深入了解請(qǐng)上網(wǎng)查找資料。

下面我們自己寫(xiě)一個(gè)程序看一下當(dāng)瀏覽器連接的時(shí)向web服務(wù)器發(fā)送的信息。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>


#define MAX 1024
//監(jiān)聽(tīng)指定ip的端口
int socket_listen( char *ip, unsigned short int port)
{
?int res_socket, res, on;
?struct sockaddr_in address;
?struct in_addr in_ip;
?res = res_socket = socket(AF_INET, SOCK_STREAM, 0);
?setsockopt(res_socket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
?memset(&address, 0, sizeof(address));
?address.sin_family = AF_INET ;
?address.sin_port =htons(port);
?address.sin_addr.s_addr = htonl(INADDR_ANY); //inet_addr("127.0.0.1");
?res = bind( res_socket, (struct sockaddr *) &address, sizeof( address ) );
?if(res) { printf( "port is used , not to repeat bind\n" ); exit(101); };
?res = listen(res_socket,5);
?if(res) { printf( "listen port is error ;\n" ); exit( 102 );? };
?return res_socket ;
}


int main(int argc, char * argv[] )
?{?
?int res_socket, conn_socket;
?int tmp ;
?struct sockaddr_in client_addr;
?char buf[MAX];
?int len = sizeof(client_addr);
?res_socket = socket_listen( "127.0.0.1", 1024) ;
?while(1)
?{
??conn_socket = accept( res_socket, (struct sockaddr * )&client_addr, &len );
??printf("webbrower information\n\n");
??//接受來(lái)自瀏覽器的信息
??while(0 == (tmp = read( conn_socket, buf, MAX-1) ) || tmp != EOF )
??{
???buf[MAX-1]=0;
???printf("%s\n", buf);
???break;
???}?
??close(conn_socket);
? ?}

}

下面為接收到的信息。


轉(zhuǎn)載自:http://m.blog.csdn.net/blog/rentiansheng/8068960

總結(jié)

以上是生活随笔為你收集整理的自己动手写web服务器一(浏览器的访问信息)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。