Blog Details

HTTP 服务器程序编写历程总结(一)
by weswoo

shopify独立站

Planning your online business goals with a specials

Kristin Weswoo

Aug 30, 2023

 HTTP服务器,就是一个运行在主机上的程序。程序启动了之后,会一直在守候其他所有客户端的请求,吸收到请求之后,处置请求,然后发送响应给客户端。客户端和服务器之间使用HTTP协议举行通讯,所有遵照HTTP协议的程序都可以作为客户端。

 
先直接上代码,然后再详细说明实现细节。   测试运行   代码写好之后,运行测试一下,将上面代码保留到server.c,然后编译程序:   ./server运行   服务器运行,监听9001端口。再用netstat下令查看:   server程序在监听9001端口,运行准确。接着用浏览器接见,乐成输出了Hello World,再实验用telnet去模拟HTTP请求:   1、乐成毗邻   2、发送HTTP请求   3、HTTP响应效果   上面是一个最简朴的server程序,代码对照简朴,省去一些细节,下面通过代码来学习一下socket的编程细节。   启动server的流程   socket 函数   确立一个套接字,通过各参数指定套接字的类型。   套接字地址结构   在socket编程中,大部门函数都用到一个指向套接字地址结构的指针作为参数。针对差其余协议类型,会有差其余结构体界说花样,对于ipv4,结构如下所示:   注:sockaddr_in是**Internet socket address structure**的缩写。   ip地址结构   套接字地址结构的作用是为了将ip地址和端口号转到达socket函数,写成结构体的方式是为了抽象。看成为一个参数转达进任何套接字函数时,套接字地址结构总是以引用方式转达。然而,协议族有许多,因此以这样的指针作为参数之一的任何套接字函数必须处置来自所有支持的任何协议族的套接字地址结构。使用void *作为通用的指针类型,因此,套接字函数被界说为以指向某个通用套接字结构的一个指针作为其参数之一,正如下面的bind函数原型一样。   这就要求,对这些函数的任何挪用都必须要将指向特定于协议的套接字地址结构的指针举行强制类型转换,酿成某个通用套接字地址结构的指针。例如:   对于所有socket函数而言,sockaddr的唯一用途就是对指向特定协议的套接字地址结构的指针执行强制类型转换,指向要绑定给sockfd的协议地址。   bind函数   将套接字地址结构绑定到套接字   地址的长度   绑定了socket之后,就可以使用该socket最先监听请求了。   listen函数   将sockfd从未毗邻的套接字转换成一个被动套接字,指示内核应接受指向该套接字的毗邻请求。   listen函数会将套接字从CLOSED状态转换到LISTEN状态,第二个参数划定内核应该为响应套接字排队的最大毗邻个数。   关于backlog参数,内核为任何一个给定的监听套接字维护两个行列:   1、未完成毗邻行列,在行列内里的套接字处于SYN_RCVD状态   2、已完成行列,处于ESTABLISHED状态   两个行列之和不跨越backlog的巨细。   listen完成之后,socket就处于LISTEN状态,此时的socket挪用accept函数就可以接受客户端发来的请求了。  

纯干货—导致服务器中毒的几种行为

Random Image 608
Random Image 608

Manage your online banking

Morbi lorem proin morbi tempor risus. Nisl lobortis diam id faucibus pretium vitae suspendisse sed accumsan. Sodales morbi tristique elit cursus gravida. Ullamcorper commodo eget pulvinar pretium. Condimentum rhoncus commodo amet nec auctor nibh vel mi blandit.

Neque ultrices nunc condimentum morbi risus tincidunt. Vel arcu lacus non ornare. Porttitor in rhoncus magna augue adipiscing.

  • Manage your time so you’ll get more done in less time
  • Cut expenses without sacrificing quality
  • Attract and retain quality, high-paying customers

开始您的独立站品牌出海

独立站品牌从0到1的步骤:产品开发 - VI定调 - 网站定制 - 运营自动化 - 客户维护

  • 12小时技术团队支持

  • 全方位品牌出海护航