http 轻型服务器

2023-12-25 01:18
文章标签 服务器 http 轻型

本文主要是介绍http 轻型服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结:总的来说,http服务器就是一个tcp服务器,在tcp服务器创建成功之后,通过向浏览器(客户端)发送html页面进行显示的过程。

服务器端代码:

#include<stdio.h>
#include<WinSock2.h> //包含网路编程头文件
#pragma comment(lib,"ws2_32.lib") //添加一个表库
using namespace std;void sendhtml(SOCKET s,const char* filename);
const char* path = "F:\\VS\\http服务器\\http服务器\\1.html";
int merror(int redata, int error,const char* showinfo)
{if (redata == error){perror(showinfo);getchar(); //输入一个字符结束return -1;}return 0;
}int main()
{WSADATA wsdata;int isok = WSAStartup(MAKEWORD(2,2),&wsdata);//确定socket的版本信息merror(isok,WSAEINVAL,"申请socket失败");//创建socketSOCKET server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//第一个参数表示af-inet使用Ipv4,第二个参数表示使用流传输,第三个参数表使用TCPmerror(server,INVALID_SOCKET,"创建socket失败");//创建一个服务器,包含ip地址,端口号struct sockaddr_in seraddr;seraddr.sin_family = AF_INET; //和创建的时候一样使用Ipv4seraddr.sin_port = htons(80); //绑定端口号,这里要使用htons将其转换为网络格式seraddr.sin_addr.s_addr = INADDR_ANY;//监听任意的地址//绑定服务器和套接字isok = bind(server,(sockaddr*)&seraddr,sizeof(seraddr));merror(isok,SOCKET_ERROR,"绑定失败。。。");//开始进行监听isok = listen(server, 5);//监听,第二个参数为最大个数merror(isok,SOCKET_ERROR,"监听失败");//创建一个客户端,用来存放链接的客户端主机信息struct sockaddr_in claddr;int cllen = sizeof(claddr);while (true){//链接成功返回一个链接的套接字SOCKET client = accept(server, (sockaddr*)&claddr,&cllen);merror(client,INVALID_SOCKET,"链接失败");//接收客户端数据char revdata[1024] = "";recv(client,revdata,1024,0);//打印接收数据printf("接收到:%s",revdata);给客户端发送一个数据//char senddata[1024] = "<h1 style=\"color:red;\">你好</h1>";//send(client,senddata,strlen(senddata),0);sendhtml(client, path);closesocket(client);}closesocket(server);WSACleanup();printf("welcome \n");return 0;
}
//文件操作
void sendhtml(SOCKET s,const char* filename)
{FILE* pfile = fopen(filename,"r");if (pfile == NULL){printf("打开文件失败\n");return;}char temp[1024]="";do{fgets(temp,1024,pfile); //获取文本数据放在缓冲区send(s,temp,strlen(temp),0);} while (!feof(pfile));}

运行结果:
在这里插入图片描述

可以看到,已经成功显示了百度的静态页面。

这篇关于http 轻型服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/533791

相关文章

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。