C語言解析http請求表單內容

[5].[文件] analy_m.c?~?1KB????下載(80) 跳至 [1] [2] [3] [4] [5] [6] [7] [8]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "cgi.h"
//編碼格式為'multipart/form-data'的內容
Node *analy_m(char *buffer, char *bound)
{
????char *start;
????char *end;
????//第一個節點
????Node *head = (Node*)malloc(sizeof(Node));
????Node *temp = head;
????fprintf(stderr,"debug:buffer is %s\n", buffer);
????//開始解析內容,name在兩個雙引號之間(詳見編碼格式)
????temp -> name = index(buffer, '"') + 1;
????end = index(temp -> name, '"');
????*end = 0;
????fprintf(stderr,"debug:temp->name is %s\n", temp -> name);
????//中間間隔了兩個"\r\n"
????temp -> value = end + 5;
????buffer = strstr(temp -> value, bound);
????//到下一個間隔符,上面間隔兩個"\r\n"
????*(buffer - 4) = 0;
????fprintf(stderr,"debug:temp->valu is %s\n", temp -> value);
????while ((start = strstr(buffer,"name=")) != NULL) {
????????//循環獲取name與value地址,直到沒有name為止
????????temp -> next = (Node *)malloc(sizeof(Node));
????????temp = temp -> next;
????????temp -> name = index(start, '"') + 1;
????????end = index(temp -> name, '"');
????????*end = 0;
????????fprintf(stderr,"debug:temp->name is %s\n", temp -> name);
????????temp -> value = end + 5;
????????buffer = strstr(temp -> value, bound);
????????*(buffer - 4) = 0;
????????fprintf(stderr,"debug:temp->valu is %s\n", temp -> value);
????}
????return head;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/383202.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383202.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383202.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

centos給用戶添加sudo權限

linux給用戶添加sudo權限: 有時候,linux下面運行sudo命令,會提示類似: xxxis not in the sudoers file. This incident will be reported. 這里,xxx是用戶名稱,然后導致無法執行sudo命令,這時候…

php手冊

http://www.php100.com/manual/php/ http://www.kuqin.com/php5_doc/

套接字編程---2(TCP套接字編程的流程,TCP套接字編程中的接口函數,TCP套接字的實現,TCP套接字出現的問題,TCP套接字多進程版本,TCP套接字多線程版本)

TCP模型創建流程圖 TCP套接字編程中的接口 socket 函數 #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type, int protocol); domain: AF_INET 這是大多數用來產生socket的協議&#xff0c;使用TCP或UDP來傳輸&…

安全關注

http://yttitan.blog.51cto.com/70821/1576365

Linux中netstat工具詳解

簡介 Netstat 命令用于顯示各種網絡相關信息&#xff0c;如網絡連接&#xff0c;路由表&#xff0c;接口狀態 (Interface Statistics)&#xff0c;masquerade 連接&#xff0c;多播成員 (Multicast Memberships) 等等。 常見參數 -a (all)顯示所有選項&#xff0c;默認不顯示…

網絡基礎 2-1(應用層,HTTP三點注意,HTTP協議格式, 最簡單的HTTP服務器)

應用層 應用層 負責應用程序之間的數據溝通-----協議都是用戶自己定的 自定制協議&#xff1a; 結構化數據傳輸 序列化&#xff1a; 將數據對象以指定的協議&#xff08;數據格式&#xff09;進行可用于持久化存儲或者數據傳輸時的數據組織 例如在分布式的系統中&#xf…

正則表達式 學習

http://regexr.com/ 在線匹配 http://c.biancheng.net/cpp/html/1434.html 查詢網址

網絡基礎2-2(傳輸層,端口,詳談UDP)

傳輸層 負責數據能夠從發送端傳輸接收端. 端口號 端口號(Port)標識了一個主機上進行通信的不同的應用程序;在TCP/IP協議中, 用 “源IP”, “源端口號”, “目的IP”, “目的端口號”, “協議號” 這樣一個五元組來標識一個通信(可以通過 netstat -n查看);一個端口只能被一個…

中文rfc文檔路徑

http://man.chinaunix.net/develop/rfc/default.htm

網絡基礎2-3(TCP協議,三次握手,四次揮手,TIME_WAIT狀態的作用,TCP如何保證可靠傳輸,TCP連接中狀態轉化,滑動窗口,流量控制,快速重傳,擁塞窗口,延遲應答,捎帶應答,粘包問題)

TCP協議 TCP協議概念 TCP全稱為 “傳輸控制協議(Transmission Control Protocol”). 人如其名, 要對數據的傳輸進行一個詳細的控制 TCP協議格式 1. 源/目的端口號: 表示數據是從哪個進程來, 到哪個進程去; 2. 32位序號/32位確認號: 后面詳細講; 3. 4位TCP報頭長度: 表示該…

超時設置

//read操作加上超時時間。1 int read_timeout(int fd, void *buf, uint32_t count, int time)2 {3 if(time > 0) {4 fd_set rSet;5 FD_ZERO(&rSet);6 FD_SET(fd, &rSet);7 8 struct timeval timeout;9 memset(&tim…

字符串題目 1 --------判斷兩個字符串是否為旋轉詞

題目描述 如果一個字符串為str&#xff0c;把字符串的前面任意部分挪到后面形成的字符串交str的旋轉詞。比如str“12345”&#xff0c;str的旋轉串有“12345”、“45123”等等。給定兩個字符串&#xff0c;判斷是否為旋轉詞。 輸入描述: 輸出包含三行&#xff0c;第一個兩個…

2021-03-04

為什么nginx轉發后端默認使用1.0而不是1.1 在 Nginx 的官網文檔中&#xff0c;有這樣一個指令&#xff1a; Syntax: gzip_http_version 1.0 | 1.1; Default: gzip_http_version 1.1; Context: http, server, location Sets the minimum HTTP version of a request required to…

字符串題目---2判斷兩個字符串是否為變形詞

題目描述 給定兩個字符串str1和str2&#xff0c;如果str1和str2中出現的字符種類出現的一樣且每種字符出現的次數也一樣&#xff0c;那么str1和str2互為變形詞。請判斷str1和str2是否為變形詞 輸入描述: 輸入包括3行&#xff0c;第一行包含兩個整數n&#xff0c;m(1 \leq n,…

設計模式7----代理模式

代理模式 概念 Proxy 模式又叫做代理模式&#xff0c;是結構型的設計模式之一&#xff0c;它可以為其他對象提供一 種代理&#xff08;Proxy&#xff09;以控制對這個對象的訪問。 所謂代理&#xff0c;是指具有與代理元&#xff08;被代理的對象&#xff09;具有相同的接口的…

網絡基礎3-1(細談IP協議頭, 網絡層,子網劃分,路由選擇,數據鏈路層,以太網幀格式,MAC地址,再談ARP協議)

IP協議 IP協議頭格式 4位版本號(version): 指定IP協議的版本, 對于IPv4來說, 就是44位頭部長度(header length): IP頭部的長度是多少個。32bit, 也就是 length * 4 的字節數. 4bit表示大 的數字是15, 因此IP頭部大長度是60字節8位服務類型(Type Of Service): 3位優先權字段(已…

c++常見并且必須記住的問題

一、基礎知識 基本語言 1、說一下static關鍵字的作用 ?2、說一下C和C的區別 3、說一說c中四種cast轉換 4、請說一下C/C 中指針和引用的區別&#xff1f; 5、給定三角形ABC和一點P(x,y,z)&#xff0c;判斷點P是否在ABC內&#xff0c;給出思路并手寫代碼 6、怎么判斷一個…

網絡中典型協議--(DNS,輸入url后, 發生的事情. ,ICMP,NAT)

DNS&#xff08;Domain Name System&#xff09; DNS是一整套從域名映射到IP的系統 域名服務器發展背景 TCP/IP中使用IP地址和端口號來確定網絡上的一臺主機的一個程序. 但是IP地址不方便記憶. 于是人們發明了一種叫主機名的東西, 是一個字符串, 并且使用hosts文件來描述主機…

高級IO--1 ---(五種典型IO,阻塞IO,非阻塞IO,信號驅動IO,異步IO, IO多路轉接)

高級IO&#xff1a; 五種典型IO&#xff1a; 阻塞IO/非阻塞IO/信號驅動IO/異步IO/IO多路轉接 IO多路轉接模型&#xff1a;select/poll/epoll 五種典型IO 阻塞IO IO操作的流程&#xff1a;等待IO操作條件具備&#xff0c;然后進行數據拷貝 為了完成IO操作發起調用&#xff…

IO多路轉接模型----(select的模型,select的優缺點,poll的模型,poll的優缺點)

IO多路轉接模型&#xff1a;select/poll/epoll 對大量描述符進行事件監控(可讀/可寫/異常) select模型 用戶定義描述符的事件監控集合 fd_set&#xff08;這是一個位圖&#xff0c;用于存儲要監控的描述符&#xff09;; 用戶將需要監控的描述符添加到集合中&#xff0c;這個描…