自己动手写web服务器一(浏览器的访问信息)
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)查找資料。
下面我們自己寫一個(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)題。
- 上一篇: urllib2打开URL(含中文)的问题
- 下一篇: 重构项目之一:大图展示