Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 1|Antwoord: 0

[Bron] .NET/C# gebruikt Socket om HTTP(s)-verzoeken te verzenden op basis van het Hypertext Transfer Protocol

[Link kopiëren]
Geplaatst op44 seconden geleden | | | |
Vereisten: Elke dag, bij het openen van webpagina's of apps, wordt de informatie die je bekijkt bijna altijd toegankelijk door HTTP- of HTTPS-verzoekantwoorden te versturen. Het gebruik van C# gebaseerd op het Hypertext Transfer Protocol en native sockets om HTTP-verzoeken te verzenden.

overeenkomst

Hypertext Transfer Protocol (HTTP) is een stateless applicatielaagprotocol dat wordt gebruikt voor gedistribueerde, collaboratieve hypertekstinformatiesystemen.

HTTP / 1.1 Protocol (RFC 9112):De hyperlink-login is zichtbaar.
HTTP-semantiek (RFC 9110):De hyperlink-login is zichtbaar.

Voorbeeldverzoek:
GET /hello.txt HTTP/1.1
User-Agent: curl/7.64.1
Host: De hyperlink-login is zichtbaar.
Accept-Language: en, mi

Voorbeeldantwoord:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

Hallo Wereld! Mijn content bevat een achterliggende CRLF.

Socket stuurt verzoeken

De broncode is als volgt:
De broncode ondersteunt het verzenden van verzoeken naar HTTP- en HTTPS-protocollen. Zoals hieronder weergegeven:



Verbinding: dichtbij vs in leven houden

Als je ReadToEndAsync gebruikt om alle gegevens uit de respons te lezen, moet je de verbinding op sluiten zetten. Als je hem op keep-alive zet, zal de ReadToEndAsync-reactie bevriezen. Redenen om niet te bevriezen: Veel webservers (zoals Nginx, Apache of bepaalde API-gateways) initiëren actief een FIN-pakket om de TCP-verbinding te sluiten als de client native is om een socket te schrijven zonder verdere actie, of als de server een idle timeout activeert (meestal ingesteld op 5 seconden).

HTTP-pijplijn, waarbij meerdere verzoeken gelijktijdig worden verzonden:De hyperlink-login is zichtbaar.

Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。

FDD8 is zo'n hexadecimaal getal dat de grootte van het volgende datablok (in bytes) specificeert. Het omzetten van fdd8 van hexadecimaal naar decimaal levert 65.016 bytes op. Dit betekent dat direct na fdd8 en CRLF 65.016 bytes aan data zijn. Daarna kunnen er meer datablokken zijn totdat een blok van grootte 0 wordt aangetroffen, wat aangeeft dat de transmissie voltooid is.

FDD8 vertelt de ontvanger dat het volgende datablok 65.016 bytes lang is.




Vorig:HTTP(s) Testsite-samenvatting (continu bijgewerkt)
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com