Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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++ HTTP套接字编程_C++_Linux_Sockets - Fatal编程技术网

C++ HTTP套接字编程

C++ HTTP套接字编程,c++,linux,sockets,C++,Linux,Sockets,关于socket system call function protocol(套接字系统调用函数协议)参数,如果有人知道的话,这是一个非常小且具体的问题,在手册中,它指出了协议的位置,当我听到socket protocol(套接字协议)时,我开始认为这是23表示telnet,80表示http的位置。这是正确的吗 sockfd=套接字(AF_INET,SOCK_STREAM,0) 我只看到传递了0或其他非整数参数,我可以在这里输入80来表示我要执行HTTP吗 也可以通过C++导入的BSD套接字库来

关于socket system call function protocol(套接字系统调用函数协议)参数,如果有人知道的话,这是一个非常小且具体的问题,在手册中,它指出了协议的位置,当我听到socket protocol(套接字协议)时,我开始认为这是23表示telnet,80表示http的位置。这是正确的吗

sockfd=套接字(AF_INET,SOCK_STREAM,0)

我只看到传递了0或其他非整数参数,我可以在这里输入80来表示我要执行HTTP吗

也可以通过C++导入的BSD套接字库来完成套接字编程。但是,从套接字到HTTP编程的步骤对我来说似乎不清楚,一旦我完成了这个编程,我将如何在这个套接字网络的顶部进行HTTP层呢

提前感谢你(第一次在这个论坛上)


套接字的第三个参数用于位于TCP或UDP之上但位于应用程序之下的协议。我不相信现在有任何这样的协议存在,所以除非你做了一些非常非常不寻常的事情,否则这永远是零


可以想象这样指定的中介协议的实现。例如,平台可以通过这种方式实现SSL。

socket函数的第三个参数指定所需的SOCK\u流的类型。除了默认的TCP之外,它还可以是SCTP


HTTP的位置要高得多,所以它不需要在传输级别进行特殊处理。其中一个仅在将创建的套接字绑定到网络地址时指定端口。

您将协议与端口混淆。虽然人们通常使用80来表示HTTP,但您可以在任何端口上使用HTTP协议,也可以在端口80上使用任何协议。哦,这就澄清了问题,我把端口与协议弄错了,虽然我认为HTTP是一种协议。那么如何使套接字端口只对http开放?如果不使用此参数,HTTP是应用程序级协议。这是套接字级别,位于TCP的正上方。如果您有一个可以在套接字级别执行HTTP的平台,您可以在这里指定它。这种实现可能存在。它会有一些常数,如
TCPPROTO_HTTP
,供您指定。@iBeyondPower实际上,第三个参数是传输层协议,它可以看作是一个大的协议家族。例如,它可以是TCP或SCTP。HTTP的级别要高出两三级。@DavidSchwartz第三个参数指定所需的SOCK_STREAM/SOCK_DGRAM的确切类型。选择不仅是TCP/UDP,而且至少是DCCP/STCP。一旦设置了完全的套接字级通信,我将如何将其传输到基于HTTP的通信?o、 这是不对的。SCTP将是一种
SOCK\u SEQPACKET
,而不是
SOCK\u STREAM
。我的回答正确地解释了分层,而你的回答没有。确实,如果实现支持多种类型,那么protocol参数将允许您指定一种类型的
SOCK\u流
。如果在SOCK\u流之上的内核HTTP中支持实现,那很可能是HTTP。@DavidSchwartz:我们的产品源代码中的文字引用:
socket(AF\u INET,SOCK\u STREAM,IPPROTO\u SCTP)
。SCTP是一种类似于TCP的流协议。@MSalters那么您就有了一个非标准的
IPPROTO_SCTP
实现,由于某种原因,它不尊重流协议。如果你根据这个异常现象得出结论,你会得到错误的结论。你读过下一行了吗?“这里,
SOCK\u SEQPACKET
表示创建一对多样式的套接字。”。我们的代码创建一个常规的1对1套接字。不要在阅读文档的中途停止阅读。两者都允许。您引用的一半适用于多播套接字。