判断Keep-Alive模式的HTTP请求的结束的实现代码_PHP
所以根据EOF就可判断一次请求的结束,下面的代码(PHP)很常见:
复制代码 代码如下:
// $fp是由fsockopen()产生的句柄
while(!feof($fp)) {
echo fgets($fp);
}
(注:短连接模式是在头部用”Connection: close”标示,长连接用”Connection: keep-alive”标示。目前HTTP/1.0默认使用短连接,HTTP/1.1默认使用长连接。)
而长连接(也称持久连接)模式的HTTP在发送完数据后服务器并不断开连接,而是留着下一次HTTP请求时使用,所以长连接的好处是显而易见的,通过共用一个TCP连接来节省以后请求时建立/断开连接的开销。而EOF是直到这个TCP连接结束(超时或出错)时才会被发送,所以我们就不能使用上面的办法来判断一次HTTP请求的结束了。这也是使用长连接时都会遇到的一个问题。目前判断的方法主要有两种:
(1) 根据头中的Content-Length字段。这个字段标明了正文的长度,我们可以以接收完指定长度的字符为判断结束的依据。
(2) 在没有Content-Length时,根据Transfer-Encoding。有些时候服务器无法确定正文的大小,因为正文可能是动态产生的,所以就不会提供Content-Length了,而是采用chunk编码来一块一块地发送正文。每个chunk块由头部和正文两部分组成,头部中由一个16进制数字指定了正文的长度;最后由一个长度为0的chunk块来表示整个HTTP正文的结束。
下面我用PHP实现了有Content-Length时的判断方式:
1. 获得Content-Length值
复制代码 代码如下:
$length = 0;
$line = '';
while($line !== "\r\n") {
$line = fgets($fp);
if(substr($line, 0, 15) === 'Content-Length:') {
$length = intval(substr($line, 16));
}
}
2. 获得正文
复制代码 代码如下:
$sum = 0;
while($sum $line = fgets($fp);
$sum += strlen($line);
echo $line;
}

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Du début à la fin : Comment utiliser l'extension php cURL pour les requêtes HTTP Introduction : En développement web, il est souvent nécessaire de communiquer avec des API tierces ou d'autres serveurs distants. Utiliser cURL pour effectuer des requêtes HTTP est un moyen courant et puissant. Cet article expliquera comment utiliser PHP pour étendre cURL afin d'effectuer des requêtes HTTP et fournira quelques exemples de code pratiques. 1. Préparation Tout d'abord, assurez-vous que l'extension cURL est installée sur php. Vous pouvez exécuter php-m|grepcurl sur la ligne de commande pour vérifier

Comment résoudre le problème du refus de connexion aux requêtes HTTP dans le développement Java. Dans le développement Java, nous rencontrons souvent le problème du refus de la connexion aux requêtes HTTP. Ce problème peut survenir en raison de restrictions côté serveur sur les droits d'accès ou de pare-feu réseau bloquant l'accès aux requêtes HTTP. La résolution de ce problème nécessite quelques ajustements de votre code et de votre environnement. Cet article présentera plusieurs solutions courantes. Vérifiez la connexion réseau et l'état du serveur. Tout d'abord, confirmez que votre connexion réseau est normale. Vous pouvez essayer d'accéder à d'autres sites Web ou services pour voir.

Brève introduction à la raison de l'erreur de requête http : 504GatewayTimeout : pendant la communication réseau, le client interagit avec le serveur en envoyant des requêtes HTTP. Cependant, nous pouvons parfois rencontrer des messages d'erreur lors du processus d'envoi de la demande. L'un d'eux est l'erreur 504GatewayTimeout. Cet article explorera les causes et les solutions à cette erreur. Qu'est-ce que l'erreur 504GatewayTimeout ? PasserelleTimeo

Erreur de requête http : solution à SocketError Lors des requêtes réseau, nous rencontrons souvent diverses erreurs. L'un des problèmes courants est SocketError. Cette erreur est générée lorsque notre application ne parvient pas à établir une connexion avec le serveur. Dans cet article, nous discuterons de certaines causes courantes et solutions de SocketError. Tout d’abord, nous devons comprendre ce qu’est Socket. Socket est un protocole de communication qui permet aux applications de

Pour définir les paramètres de requête pour les requêtes HTTP dans Go, vous pouvez utiliser la méthode http.Request.URL.Query().Set(), qui accepte les noms et valeurs des paramètres de requête comme paramètres. Les étapes spécifiques incluent : Créer une nouvelle requête HTTP. Utilisez la méthode Query().Set() pour définir les paramètres de requête. Encodez la demande. Exécutez la demande. Obtenez la valeur d'un paramètre de requête (facultatif). Supprimez les paramètres de requête (facultatif).

La façon dont Nginx implémente la configuration des nouvelles tentatives de requête HTTP nécessite des exemples de code spécifiques. Nginx est un serveur proxy inverse open source très populaire. Il possède des fonctions puissantes et des options de configuration flexibles et peut être utilisé pour implémenter la configuration des nouvelles tentatives de requête HTTP. Dans les communications réseau, la requête HTTP que nous lançons peut parfois échouer pour diverses raisons, telles que le retard du réseau, la charge du serveur, etc. Afin d'améliorer la fiabilité et la stabilité de l'application, nous devrons peut-être réessayer lorsque la demande échoue. Ce qui suit présentera comment utiliser Ng

Comment utiliser Nginx pour compresser et décompresser les requêtes HTTP Nginx est un serveur Web hautes performances et un serveur proxy inverse puissant et flexible. Lors du traitement des requêtes HTTP, vous pouvez utiliser les modules gzip et gunzip fournis par Nginx pour compresser et décompresser les requêtes afin de réduire la quantité de transmission de données et d'améliorer la vitesse de réponse aux requêtes. Cet article présentera les étapes spécifiques d'utilisation de Nginx pour compresser et décompresser les requêtes HTTP, et fournira des exemples de code correspondants. Configurer le module gzip

Titre : Envoi de requêtes HTTP et gestion des réponses à l'aide de HttpClient en Java11 Introduction : Dans les applications Internet modernes, la communication HTTP avec d'autres serveurs est une tâche très courante. Java fournit des outils intégrés qui peuvent nous aider à atteindre cet objectif. Le dernier et recommandé est la classe HttpClient introduite dans Java11. Cet article explique comment utiliser HttpClient en Java11 pour envoyer des requêtes HTTP et traiter les réponses,
