Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C是否有HTTP2的标准库_C_Http_System_Http2_Spdy - Fatal编程技术网

C是否有HTTP2的标准库

C是否有HTTP2的标准库,c,http,system,http2,spdy,C,Http,System,Http2,Spdy,[Intro]] 我已经练习了4个月的C语言,每周5次,我正在尝试做出最好的猜测,以便进入HTTP2的web服务器/客户端编程。我使用过HTML5和Javascript,我也使用过HTTP2,并且在低水平上使用了SPDY [Info] Debian GNU/Linux (Buster), V.10 编译器-叮当声 标题HTTP2(?) HTTP头文件(sys/socket.h、sys/types.h、signal.h、arpa/inet.h) 网络协

[Intro]]

我已经练习了4个月的C语言,每周5次,我正在尝试做出最好的猜测,以便进入HTTP2的web服务器/客户端编程。我使用过HTML5和Javascript,我也使用过HTTP2,并且在低水平上使用了SPDY

[Info]

Debian GNU/Linux (Buster), V.10

                    
编译器-叮当声
标题HTTP2(?)
HTTP头文件(sys/socket.h、sys/types.h、signal.h、arpa/inet.h) 网络协议-TCP、HTTP2、HTTP

[问题]

Debian GNU/Linux (Buster), V.10

                    
在使用Java时,您会注意到游戏引擎中使用了大量的
HTTP2
<代码>HTTP2自2021年起,在当前语言中越来越多地被标准化。(焦点->)C有一个标准库,用于使用
HTP
TCP

HTTP2
使用加密&据我所知,它基于“
TCP
”。是否有一个标准用于C处理“
http2tcp
”类型。我需要能够从
HTTP2
&轻松地执行任务(send(),recv())。(HTTP是一种协议。它定义了计算机之间的通信方式。有很多不同的协议;HTTP/2和HTTP基于TCP/IP,几乎所有计算机都使用TCP/IP连接到服务器。TCP/IP指定如何在客户端和特定服务器之间创建连接,并发送原始字节。HTTP(2)是这个层之上的一个层,它定义了客户端应该如何告诉服务器它需要什么资源

base POSIX提供的API仅扩展到原始TCP/IP。下面是一个应用程序可以发送到web服务器以请求网页的示例(这是一个HTTP/1请求,HTTP/2是二进制和加密的,使其不可读)

但是,在程序中手动组装这些请求有点不方便,特别是当您开始执行发送参数、加密等操作时。在这种情况下,人们应该使用机器上的一些库。重要的是这些库是非标准的。最常见的库之一可能是
libcurl

.总结如下:

您可以通过向编译器和链接器提供一些标志来使用libcurl编译程序。您可以通过运行
curl-config--cflags
curl-config--libs
来获得这些标志

使用
curl\u global\u init(位字段)
初始化libcurl。位字段可以使用
curl\u global\u WIN32
curl\u global\u SSL
作为其值。由于要使用加密,您可能需要
curl\u global\u SSL

libcurl有两个接口:
easy
multi

通过调用
curl\u easy\u init()
获得一个简单的句柄。这个句柄允许您发出请求

使用
curl\u easy\u setopt(handle,option,value)
handle
是您获得的“easy handle”,而
option
是一个常量,例如
CURLOPT\u URL
用于设置请求的URL,而
value
是您想要设置的值。它通常是一个字符串

将带有
选项的回调函数设置为
CURLOPT\u WRITEFUNCTION
。它应该具有签名
size\t(void*buffer、size\t size、size\t nmemb、void*userp)
。当libcurl从服务器接收数据时会调用它。通常会多次调用它。
nmemb
指出
缓冲区中数据的大小。它应该返回它成功处理的字节数。通常这是
nmemb

使用
curl\u easy\u perform(handle)
执行请求

当您处理完所有要发出的请求后,请调用
curl\u global\u cleanup()

中没有专用于
http2的部件

但是,在
C
中使用
http2
是完全可能的,并且有很好的文档记录和广泛使用。例如:

  • -信息:

  • 关于
    http2
    和各种编程语言的更多信息可以在这里找到:

    不,没有适用于http2甚至HTTP的标准C库。有各种开放源代码库提供HTTP/2支持。搜索它们并评估哪一种可以满足您的需求。是的,您当然可以从scr编写但它是否可行取决于您自己的领域和编程专业水平。