当前位置: 首页 > news >正文

广州专业网站建设报价百度关键词搜索量排行

广州专业网站建设报价,百度关键词搜索量排行,影视后期线上培训哪个机构好,网站个人主页模板目录 1 域名解析 2 如何实现万维网服务器&#xff1f; 2.1 HTTP 的操作过程 2.2 万维网服务器实现 1 域名解析 域名解析gethostbyname函数 主机结构在 <netdb.h> 中定义如下&#xff1a; struct hostent {char *h_name; /* 官方域名 */char **h_alias…

目录

1 域名解析

2 如何实现万维网服务器?

2.1 HTTP 的操作过程

2.2 万维网服务器实现


1 域名解析

域名解析gethostbyname函数 

主机结构在 <netdb.h> 中定义如下:

struct hostent {char  *h_name;            /* 官方域名 */char **h_aliases;         /* 别名*/int    h_addrtype;        /* 地址族(地址类型) */int    h_length;          /* 地址长度 */char **h_addr_list;       /* 地址列表 */
}
#define h_addr h_addr_list[0] /* 实现向后兼容性 */

结构的成员包括:

h_name :主机的正式名称

h_aliases:主机的备用名称数组,以 NULL 结尾指针

h_addrtype:地址类型;(AF_INETAF_INET6

h_length:地址的长度(以字节为单位)

h_addr_list:指向主机网络地址的指针数组(按网络字节顺序),由 NULL 指针终止

h_addr h_addr_list:中的第一个地址,以实现向后兼容性

示例

#include <stdio.h>
#include <netdb.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <arpa/inet.h>int main(int argc, char *argv[])
{int i;if(argc < 2){printf("%s <host name>\n", argv[0]);exit(0);}struct hostent *host = gethostbyname(argv[1]);for(i = 0; host->h_aliases[i] != NULL; i++){printf("%s\n", host->h_aliases[i]);}printf("Address type:%s\n",host->h_addrtype == AF_INET ? "AF_INET":"AF_INET6");for(i = 0; host->h_addr_list[i] != NULL; i++){printf("IP address %d:%s\n", i, inet_ntoa(*(struct in_addr *)host->h_addr_list[i]));}endhostent(); //释放创建出的地址return 0;
}

实现效果

2 如何实现万维网服务器?

2.1 HTTP 的操作过程

HTTP 规定:在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个 ASCII 码串构成的请求和一个类似的通用互联网扩充,即“类MIME (MIME-like)”的响应组成。

HTTP 报文通常都使用 TCP 连接传送。

 http连接过程

 html解释型语言

<html>
<head><title>home</title></head>
<body>
<center><h1>Hello World!</h1></center>
<hr><center>nginx</center>
</body>
</html>

 打开home.html(firefox ./home.html)

2.2 万维网服务器实现

nc命令实现步骤

  • 打开终端,nc <本机ip> 80
  • 打开游览器访问本机ip
  • 在终端输入以下内容
HTTP/1.1 200 OK
Content-Type: text/html<html>
<head><title>home</title></head>
<body>
<center><h1>Hello World!</h1></center>
<hr><center>nginx</center>
</body>
</html>

代码实现步骤

  • 准备好http头文件
  • 准备好html文件
  • 创建TCP socket
  • 实现client hanlde功能

home.html 

<html>
<head>
<title>server name</title>
<meta charset="utf-8">
</head>
<body>
<body>
<h1>文档标题</h1>
<p>Hello World!</p>
</body>
</body>
</html>

 http-head.txt

HTTP/1.1 200 OK
Content-Type: text/html
Connection: close

 服务代码

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <strings.h>#define PORT 80
#define BACKLOG 5
#define HTTPFILE "http-head.txt"
#define HTMLFILE "home.html"int ClientHandle(int newfd);int main(int argc, char *argv[])
{int fd, newfd;struct sockaddr_in addr;/*创建套接字*/fd = socket(AF_INET, SOCK_STREAM, 0);if(fd < 0){perror("socket");exit(0);}int opt = 1;if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const void *) &opt, sizeof(opt) ))perror("setsockopt");addr.sin_family = AF_INET;addr.sin_port = htons(PORT);addr.sin_addr.s_addr = 0;/*绑定通信结构体*/if(bind(fd, (struct sockaddr *)&addr, sizeof(addr) ) == -1){perror("bind");exit(0);}/*设置套接字为监听模式*/if(listen(fd, BACKLOG) == -1){perror("listen");exit(0);}/*接受客户端的连接请求,生成新的用于和客户端通信的套接字*/newfd = accept(fd, NULL, NULL);if(newfd < 0){perror("accept");exit(0);}ClientHandle(newfd);close(fd);return 0;
}int ClientHandle(int newfd){int file_fd = -1;char buf[BUFSIZ] = {};int ret;do {ret = recv(newfd, buf, BUFSIZ, 0);}while(ret < 0 && errno == EINTR);   //小于0并且信号中断if(ret < 0){perror("recv");exit(0);}else if(ret == 0){close(newfd);return 0;}else{printf("=====================================\n");printf("%s", buf);fflush(stdout);}bzero(buf, ret);file_fd = open(HTTPFILE, O_RDONLY);   //http文件if(file_fd < 0){perror("open");exit(0);}ret = read(file_fd, buf, BUFSIZ);printf("%s\n", buf);send(newfd, buf, ret, 0);close(file_fd);bzero(buf, ret);file_fd = open(HTMLFILE, O_RDONLY);   //html文件if(file_fd < 0){perror("open");exit(0);}ret = read(file_fd, buf, BUFSIZ);printf("%s\n", buf);send(newfd, buf, ret, 0);close(file_fd);close(newfd);return 0;
}

 3 练习

1.模拟实现http服务器,并使用浏览器访问。提交浏览器访问你http服务器的截图

http://www.yayakq.cn/news/391980/

相关文章:

  • 观止网站建设大连金石滩
  • 永济市做网站织梦圈子如何调用网站默认模板
  • 企业网站的建设内容个人网站的建设参考文献
  • 小说网站制作开源从事网页设计工资高吗
  • 网站不做备案大气全屏通用企业网站整站源码
  • 网站设计原型图怎么做如何销售做网站
  • 萍乡网站设计公司自贡百度做网站多少钱
  • 达州网站开发seo 什么意思
  • 公司网站的建设与运营管理制度收录好的网站有哪些
  • 王业美三个字组成的子无锡seo公司找哪家好
  • 人才市场网站建设论文wordpress 伪静态规则
  • 做学校网站素材图片北京住房投资建设中心网站首页
  • 新网站怎么做seo 风享免费网站排名优化在线
  • 市直部门网站建设维护工作总结自己搭建服务器做网站
  • 美叶设计网站wordpress主题被留后面
  • 网站互点联盟布吉网站建设找哪家公司比较好
  • 网站建设与seo优化的公司制作静态网页的软件
  • 网站怎么做app吗seo入门培训教程
  • 微信怎么做淘客网站湘潭建设厅官方网站
  • 极速微网站建设cmslogo设计免费软件
  • 做网站植入广告赚钱qq小程序下载
  • 现在市场网站建设怎么样哈尔滨网站建设公司名字
  • 河北沧州做网站的电话住房和城乡建设厅证书查询网
  • 怎么样自己做一个网站济南百度推广公司电话
  • 网站代运营推广设计公司首页
  • 在相亲网站做红娘做网站 你的出路在哪里
  • 做 爱 网站视频短片免费好用的wordpress主题
  • django企业网站源码视频号的视频怎么下载
  • 营销导向企业网站建设彩票做的最好是个网站好
  • 网站模板编辑工具qq官方网页版登录