C语言-写一个简单的Web服务器(一)

这篇具有很好参考价值的文章主要介绍了C语言-写一个简单的Web服务器(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于TCP的web服务器

概述

C语言可以干大事,我们基于C语言可以完成一个简易的Web服务器。当你能够自行完成web服务器,你会对C语言有更深入的理解。对于网络编程,字符串的使用,文件使用等等都会有很大的提高。
关于网络的TCP协议在这里不在多说,大家可以查阅些资料。

工具

开发工具: CLion,编译器(Cygwin,如果不会用建议看看我的另一篇博客-CLion)。

演示效果图

C语言-写一个简单的Web服务器(一),C语言,服务器,c语言,前端
C语言-写一个简单的Web服务器(一),C语言,服务器,c语言,前端
C语言-写一个简单的Web服务器(一),C语言,服务器,c语言,前端

## 创建socket对象

```C
int server_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (0 > server_socket) {
    printf("[服务器] 创建socket对象失败,服务器启动失败...\n");
    return -1;
}
printf("[服务器] 创建socket成功....\n");

绑定服务器端口

struct sockaddr_in my_addr;
bzero(&my_addr, sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(PORT);
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);


int bind_ret = bind(server_socket, (struct  sockaddr*) &my_addr, sizeof(my_addr));

if (0 > bind_ret) {
    printf("[服务器]绑定端口%d失败,服务器启动失败\n", PORT);
    return -2;
}
printf("[服务器] 绑定端口:%d成功....\n", PORT);

监听服务器端口

int listen_ret = listen(server_socket, BACK_LOG);
if (0 > listen_ret) {
    printf("监听端口:%d失败,服务器运行失败....\n", PORT);
    return -3;
}
printf("[服务器] 监听端口:%d成功....\n", PORT);

建立连接

struct sockaddr_in accept_in;
socklen_t socklen = sizeof(accept_in);
int accept_socket = accept(server_socket, (struct sockaddr *) &accept_in, &socklen);

if (-1 == accept_socket) {
    printf("[服务器] 接收请求失败,建立连接失败... \n");
    return -4;
}
printf("[服务器] 建立连接成功....\n");

获取客户端请求

char buffer[BUFFER_SIZE];
memset(buffer, 0, sizeof(buffer));
ssize_t data = recv(accept_socket, buffer, sizeof(buffer), RECV_FLAG);


if (data == 0) {
    printf("[服务器] 超时或对端主动关闭...\n");
    break;
}
if (0 > data) {
    printf("[服务器] 接收数据失败...\n");
    break;
}

printf("[服务器] 与客户端建立连接成功...\n");

启动服务器

[服务器] 创建socket成功....
[服务器] 绑定端口:9999成功....
[服务器] 监听端口:9999成功....
[服务器] 建立连接成功....
[服务器] 与客户端建立连接成功...

下一回我们研究如何解析前端(浏览器)发过来的数据。文章来源地址https://www.toymoban.com/news/detail-839020.html

到了这里,关于C语言-写一个简单的Web服务器(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中文大语言模型 Llama-2 7B(或13B) 本地化部署 (国内云服务器、GPU单卡16GB、中文模型、WEB页面TextUI、简单入门)

            本文目的是让大家先熟悉模型的部署,简单入门;所以只需要很小的算力,单台服务器 单GPU显卡(显存不低于12GB),操作系统需要安装 Ubuntu 18.04。         准备一台服务器 单张英伟达GPU显卡(显存不低于12GB),操作系统需要安装 Ubuntu 18.04 (具体安装过程忽略)

    2024年02月08日
    浏览(48)
  • 一个简单的DNS服务器

    DNS数据包的格式如下: 头部:会话标识ID,用于标识报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应。 正文: Queries区域 查询名QNAME:要查找的名字,是一个或多个标识符的序列。 查询类型QTYPE:每一个问

    2024年02月09日
    浏览(49)
  • Web 服务器 -【Tomcat】的简单学习

    1.1 什么是Web服务器 Web服务器是一个应用程序( 软件 ),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是\\\"提供网上信息浏览服务\\\"。 Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Web Tomcat服务器软

    2024年02月13日
    浏览(43)
  • 简单Web服务器程序设计与实现

    实现提供静态网页服务的web服务器 实现提供cgi动态网页服务的web服务器 web服务器实现多进程服务 Linux程序设计综合实践是我们软件工程专业必须经历的过程,是理论与实践相结合的重要方式,使我们在实践中了解Linux操作系统、在实践中巩固知识。实习是个人综合能力的检验

    2024年02月08日
    浏览(45)
  • 从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构

    由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习方向,有什么错误的地方欢迎各位同行进行讨论。 本篇教程预计使用Java+Redis+Mongo 本着先完成再完美的原则,从最简单的

    2024年02月10日
    浏览(59)
  • 配置web服务器+编写简单页面+分析交互过程

    目录 配置web服务器 IIS配置web服务器 C++搭建简单的web服务器 编写web页面 程序测试 IIS配置测试 C++程序测试 Wireshark捕获交互过程及分析 三次握手 请求报文 请求行 请求头 请求体 响应报文 响应行 响应头 响应体 四次挥手 实验中遇到的问题及分析 参考资料 使用Windows自带的II

    2024年02月08日
    浏览(48)
  • 【100天精通python】Day47:python网络编程_Web开发:web服务器,前端基础以及静态服务器

    目录 1  网络编程与web编程 1.1 网络编程 1.2 web编程  1.3 前后端交互的基本原理/

    2024年02月11日
    浏览(52)
  • 搭建第一个Web服务器(在eclipse或idea上部署Tomcat服务器)

    💻博主现有专栏:                 C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,Python机器学习等 🥏主页链接:     

    2024年04月12日
    浏览(47)
  • 使用nginx简单搭建一个ChatGPT代理服务器

    作者:ChenZhen 本人不常看CSDN消息,有问题通过下面的方式联系: 邮箱:1583296383@qq.com vx: ChenZhen_7 我的个人博客地址:https://www.chenzhen.space/🌐 版权:本文为博主的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。📝 如果对你有帮助,请给一个小小的sta

    2024年02月06日
    浏览(76)
  • Java 简单实现一个 UDP 回显服务器

    只需要继承自之前写的服务端, 然后重写父类 process 方法即可. 添加一些查询字典的逻辑. 效果 ✨ 本文记录了一个简单的 UDP 回显服务器代码. ✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习. ✨

    2024年02月21日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包