优秀的编程知识分享平台

网站首页 > 技术文章 正文

PHP虚拟主机模拟socket发送GET,POST请求

nanyue 2024-11-06 11:17:18 技术文章 3 ℃

相信在日常编程中我们大部分时间是在通过浏览器向服务器发出GET或者POST请求。那么问题来了,我们可不可以通过其它方式发出GET,POST请求呢?当然可以,不然你也就不会来了解SOCKET,也不会看到这篇文章。

稍微了解过HTTP协议的人知道,浏览器提交请求的实质是向服务器发送一个请求信息,这个请求信息包涵请求行、请求头、请求体三部分组成。当然,请求体非必需。而后服务器根据请求信息返回一个响应信息。连接断开。下面我们通过 一张图片来大概了解一下 。

图片简解释

浏览器发出请求(格式)

请求首行:请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1。

2~n请求头:请求头名称:请求内容,即为key:value格式,例如:Host:localhost:8080。

空行:用来与请求体分开。

请求体:GET没有请求体,只有POST有请求体。

GET请求

HTTP默认的请求方式是GET。

GET:

没有请求体。

数据必须在1K之内。

GET请求数据会暴露在浏览器的地址栏中。(密码)

POST请求

数据不会出现在地址栏中。

数据的大小没有上限。

有请求体。

请求体中如果出现中文,会使用URL编码。

使用表单可以发送POST请求,但表单默认是GET

服务器响应请求(格式)

响应首行

响应头信息

空行

响应体

通过上面的内容,我想大家大概知道了http的重要性了。作为php程序员在日常的项目开发中也肯定会用到http协议。如果想要进一步的提高自己的编程水平的话,那就有必要去深入的了解一下http协议。

目前我正在恶补学习关于php的http编程,很多东西以前还存在困惑的,现在也逐渐豁然开朗,也从中受益匪浅。希望分享给大家。下面我们先简单的了解一下http协议,心及什么是SOCKET。里面涉及的知识比较多,所以只能尽量以大家能接受的方式给大家呈现。

什么是HTTP协议

官方的解释是:http(HTTP-Hypertext transfer protocol):超文本传输协议,基于请求/响应模式。

它详细的规定了www服务器与客户端之间数据传送的通信规则。是一个无状态协议,和FTP相比而言,ftp是有状态的。

什么是Socket?

Socket的原意是“孔”或“插座”的意思。一般普遍叫它“套接字”,它的作用是用来描述IP地址和各端口。我们可以将其理解为一个通信链的句柄。它可以实现不同主机之间的互相通信。

Internet上的主机都装了多个服务软件,比如XWAMP,phpstudy等,而且同时提供用户多种服务,每种服务都有相应的一个Socket被绑定在相应的一个端口上面,而不同的端口它所对应的服务内容也不一样。

所以,其实通过socket操作远程文件和读写本地文件也就变得非常简单。这里我们可以把本地文件看成是通过硬件传输的,而远程文件是通过internet传递。

下面我们一起通过一段代码来消化一下上面 的内容。

实现:通过fsocketopen()模拟socket将服务本地服务器链接的内容显示在浏览中;

代码:

1、先新建一个test.php文档:

<?php

echo "hello world!";

?>

并保存.

2、新建一个test.php文档,并键入以下代码

$sk = fsockopen('localhost',80,$errno,$errstr,5); //使用localhost本地服务器,80端口,如果出错则返回错误号,错误内容,5秒运行时间;

$arr = array(

'GET /http/test.php HTTP/1.1',

'host:localhost',

'',

''

);

$str = implode("\n",$arr); //将$arr数组以回车符分隔

fwrite($sk,$str); //将内容写入文档流

while ($row = fread($sk,32)){ //循环读取$sk里面的内容每次读32字节

echo $row;

}

fclose($sk); //最后关闭

运行结果:如下图

希望对大家有用,不然今晚白熬夜了.

最近发表
标签列表