使用GHashTable和strsep()函数解析http报文

Http报文解析 C/C++:实现HTTP请求和响应报文解析的源代码 当然,这只是一个简单的示例,实际的HTTP报文可能更复杂,需要更加严格的解析逻辑和错误处理。在实际开发中,你可能会考虑使用更强大的HTTP解析库或框架,例如libcurl、Boost.Beast等,它们提供了更完整和高性能的HTTP解析功能。HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它基于请求-响应模式,客户端发送HTTP请求,服务器返回HTTP响应。Http报文解析 C/C++:实现HTTP请求和响应报文解析的源代码。函数用于解析HTTP响应报文。 阅读详情

#include <stdlib.h>

#include <glib.h>


#define FIELD_NAME_ARRAY_LENGHT  8

field_name_array[FIELD_NAME_ARRAY_LENGHT] = {"wd", "rsv_spt", "issp", "rsv_bp", "ie", "tn", "n", "inputT"};


int main()

{

    char data[1024] = "?wd=getenv&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&n=2&inputT=1186";       


     //解析报文        

    char *tp = data, *p, *key_array, *value_array;

 GHashTable *table = NULL;

    table = g_hash_table_new(g_str_hash, g_str_equal);  

    

 //分解字符串为一组字符串。从tp指向的位置起向后扫描,遇到'&'后,将此字符替换为NULL,返回tp指向的地址。

    while(NULL != (p = strsep(&tp, "&")) ) 
    {
        key_array = strsep(&p, "=");
        value_array = p;
        g_hash_table_insert(table, key_array, value_array); //将两次strsep()解析出来的key-value对插入hashtable中
    }


    //取出key-value
    char *field_value_array[FIELD_NAME_ARRAY_LENGHT] = {NULL};
    for(i = 0; i < FIELD_NAME_ARRAY_LENGHT; i++)
    {
          g_hash_table_lookup_extended(table, field_name_array[i], NULL, (gpointer *)&field_value_array[i]); //从hashtable中取出key为field_name_array[i]的value值

    }

    return 0;

}


迷茫之后:Java研发转型售前——选择大于努力! 写下这段文字的时候,小弟已经从Java开发岗位转型软件售前近20天了........ 2011年9月毕业于某培训机构,学的是java语言。之后来到深圳,进入华为外包开始了我的程序猿生涯....刚入职场,第一份工作总是兴奋情绪占主导地位,加入文思创新在华为的人力外包项目组,然后跟着老员工学习、修复小bug,一步一坑的去熟悉那老掉牙的框架...ejb+struts1.2.........项目组老 阅读详情

相关推荐

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1082

strtok和strsep函数详解

函数原型:char *strtok(char *s, const char *delim);                             char *strsep(char **s, const char *delim);        功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

半仙姜 5万+

从零构建:基于Docker与FRR的OSPF虚拟网络实验室

本文详细介绍了如何利用Docker与FRR构建OSPF虚拟网络实验室,从环境设计到高级网络拓扑配置,再到实验验证与排错。通过容器化技术实现高效资源利用和快速部署,特别适合网络协议教学、企业网络架构验证等场景。

plum99的博客 222

strsep函数用法

1. 位置:在kernel/lib/string.c中,头文件<linux/string.h>中 2. 函数功能:破坏性分割字符串,返回分割前一部分,后一部分保存在原字符中 3. 函数原型:char * strsep(char **,const char *); /** * strsep - Split a string into tokens * @s: The string to be searched * @ct: The characters to search for

qq_26848623的博客 7538

Vivado 18.3安装全攻略:从下载到配置的完整指南

本文详细介绍了Vivado 18.3的安装全流程,从下载准备到配置优化,特别适合FPGA开发者。文章包含硬件要求、版本选择、组件配置等实用技巧,帮助用户避免常见安装问题,确保稳定运行。重点解析了License配置和系统优化设置,提升开发效率。

weixin_28331555的博客 567

【音视频处理】MP4、FLV、HLS适用范围,在线视频播放哪个更好

本期我们讨论在线点播的视频格式,对比这些视频格式的优劣以及原因 1、封装格式的作用 2、MP4 3、FLV 4、HLS

池鱼 - YiiGaa 2万+

c语言字符串分割函数

C语言字符串分割strsep函数用于分解字符串为一组字符串。定义语句为char *strsep(char **stringp, const char *delim);使用实例:#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; int main() { char str[] = "$GP...

小明的专栏 1万+

Frenet坐标系下动态街道场景的最优轨迹生成

本文详细解读了Lattice Planner

BigDavid123的博客 2392

Linux平台C简单解析Http报文

版权声明:本文为优快云博主「lichaofan2008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/lichaofan2008/article/details/121990221。// 解析body 如果最后一行不是空行,说明有body数据。char *code;char *desc;// HttpResponse解析函数。// HttpResponse结构体。// 解析header。

dujian2698的博客 766

H.264 入门篇 - 09 (帧间预测 - 参考帧列表)

短期和长期的关系和区别:在一个解码器中的 DPB(参考帧缓存)大小总是有限的,所以引入一个问题,什么样的参考帧会被保存到 DPB 中,什么样的参考帧会被移除出去,因此将分为长期和短期参考帧,所谓短期参考帧是这帧不会长期驻留在DPB中,如果参考帧缓存已满或者有其他特定的条件,那么短期参考帧就会被从DPB中移除;与之相对的长期参考帧,只要没有遇到某个指定的条件,遇到某个IDR帧, 遇到了清空整个DPB的指令等等,那么长期参考帧会长期在DPB中,不会因为有新的参考帧而被冲刷掉;(P帧是按照编码顺序)

StephenZhou 5104

33、Windows Server 2016 系统管理与安全防护指南

本文详细介绍了Windows Server 2016系统中的三大核心管理与安全功能:WSUS补丁管理、Windows Defender反恶意软件配置以及Windows Server Backup数据备份与恢复。涵盖WSUS初始同步、组策略配置客户端、混合环境更新评估流程;Windows Defender的图形化与PowerShell管理方式,以及通过组策略集中管控;Windows Server Backup的安装、单次与计划备份设置、增量备份机制和文件恢复操作。内容适用于企业IT管理员进行系统维护与安全防护

beta5的博客 97

C语言解析http协议

1 关键解析函数 1.1 strstr() 函数原型: extern char *strstr(char *str1, const char *str2); str1: 被查找目标  str2: 要查找对象  返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。 例子: char str[]="1234xyz"; char *str1=strstr(str,"34"); // cout << str1 <<

luseysd的博客 5788

uniapp [全端兼容] - 实现人脸识别对比+人脸相似度,从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,人脸活体检测及对比(免费纯前端方案+调用第三方API接口方案)

uniApp人脸对比 人脸对比识别 人脸对比相似度,uniapp实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,uniapp实现人脸识别对比,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。uniapp H5网页如何实现人脸相似度比对,uniapp纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,UNI-APP人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,uniapp微信小程序人脸相似度对比分析,uniapp

🏆 前端领域优质创作者 5020

C语言之strsep用法实例(八十六)

本篇目的:C语言之strsep用法实例strsep 函数是 C 语言标准库中的一个函数,用于在字符串中查找并分割子串。该函数在处理由特定分隔符分隔的字符串时非常有用,常见于处理 CSV 文件、命令行参数等场景。strsep 函数接受两个参数:一个是指向要分割字符串的指针的指针,另一个是指向分隔符字符串的指针。在每次调用时,strsep 会从原字符串中查找第一个分隔符,将找到的子串与后续部分分离开来,并返回指向子串的指针。同时,它会更新传入的指针,使其指向原字符串中剩余的部分。

Android系统攻城狮 2819

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

c语言中GHashTable的使用

原因:在插入的过程中由于我的key和value是局部遍历,在我走到查询的时候已经被销毁(推测是地址被重新使用)导致找不到对应的value。解决方法:插入的时候为key,value开辟空间,但是查找并不需要,还是按照原理的方法(不知道原因,不够问题解决了)如果哈希表中存在与给定键匹配的键值对,g_hash_table_lookup() 返回指向该值的指针。需要注意的是,存储都是以指针类型存储,存储的是个地址,查找时候也会根据传入的地址查找。结果发现我在查找的时候使用对应的key找不到value的值。

m0_58103115的博客 455

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C语言实现HTTP服务器POST请求解析(99%开发者忽略的细节曝光)

掌握C语言HTTP服务器的POST请求解析技巧,解决手动解析报头与数据的常见难题。适用于嵌入式开发、自定义Web服务等场景,详解缓冲区处理、Content-Length提取与字符编码适配。深入底层原理,提升服务稳定性,99%开发者忽略的细节全解析,值得收藏。

VarFun的博客 1081

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

GHashTable基本用法和注意事项

GHashTable 基本用法和注意事项。

choumin的专栏 439

用C socket http发送这段请求报文

HTTP分为请求行,请求头部以及请求内容那个长度数字值就是请求内容的长度(字节为单位)给一段例子你就基本明白了:onst CString getString(int i){    CString s;    s.Format(_T("%d"), i);    return s;}////////////////////////////////CString

向往大海专栏 1511

HTTP报文解析及其状态码

HTTP 请求报文l HTTP Command: //方法字段,说明其使用的是GET 方法l URI: / //URL 字段,发送请求至保存该网站的服务器。l HTTP Version: //http 协议版本字段,用是的http/1.1 版本l Accept: //指示可被接受的请求回应的介质类型范围列表。l Accept-Language: //限制了请求回应中首选的语言为

java交流平台 3102

c语言实现HashTable

c语言实现HashTable

nanshaws的博客 1131

http报文解析

文章目录1. http get请求1.1 http get请求报文1.2 http get请求的原始报文数据1.3 http get请求报文的格式2. http post请求2.1 http post请求报文的格式3.http 响应报文3.1 http 响应报文解析3.2 http 响应原始报文解析3.3 http响应报文的格式 1. http get请求 1.1 http get请求报文 ----请求行----- GET / HTTP/1.1 => 请求方法(方式) 请求的资源路径 http协议的版

sinat_39783664的博客 1388

Http权威指南笔记(三)——HTTP报文

前面介绍了URL是用于定位服务器上的资源。但是定位到资源后,通过什么样的方式、规定来让客户端和服务端进行交流呢?这就是本篇要介绍的HTTP报文。 1 报文流 HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头。这些报文在客户端、服务器和代理之间流动。术语“流入”、“流出”、“上游”及“下游”都是用来描述报文方向的。一个示...

VictorCatFish的博客 1040

c语言 http服务器,C语言编写Http服务器中Request的解析,让一些从零开始

制作流程观察收到的http数据解析 request 的 method url version解析 header解析 body观察收到的http数据如果你能完成一个简单的基于TCP/IP的socket server 程序,那么恭喜你,本文你可以好好读一读。HTTP正式基于TCP/IP的应用层协议,所以只要我们的程序能读懂HTTP数据,并做出符合HTTP协议的响应,那么就能完成HTTP的通信。如果你...

weixin_36191781的博客 1262

Linux glib库hash表GHashTable介绍

GHashTable1 简单使用2 原理分析3 思考总结 1 简单使用 hash表是一种提供key-value访问的数据结构,通过指定的key值可以快速的访问到与它相关联的value值。hash表的一种典型用法就是字典,通过单词的首字母能够快速的找到单词。 要使用一个hash表首先必须创建它,glib库里有两个函数可以用于创建hash表,分别是g_hash_table_new()和g_hash_table_new_full(),它们的原型如下: GHashTable *g_hash_table_new(G

不如敲代码的博客 3955

strsep函数详解

函数原型:char *strsep(char **s, const char *delim); 功能:是用来分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 返回值:从s开头开始的一个个子串,当没有分割的子串时返回NULL。 ...

qq_42479987的博客 5560
上一篇: glib库简单计时器的实现
下一篇: 字符编码笔记:ASCII,Unicode和UTF-8
松哥是好人
博客等级 码龄15年 57粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值