이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 1|회답: 0

[출처] .NET/C#은 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)에 기반한 HTTP(s) 요청을 보내기 위해 소켓을 사용합니다

[링크 복사]
게시됨44초 전 | | | |
요구사항: 매일 웹페이지나 앱을 열 때, 탐색하는 정보는 거의 항상 HTTP 또는 HTTPS 요청 응답을 통해 접근됩니다. 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)과 네이티브 소켓을 기반으로 한 C#을 사용하여 HTTP 요청을 보냅니다.

협정

하이퍼텍스트 전송 프로토콜(HTTP)은 분산되고 협업적인 하이퍼텍스트 정보 시스템에 사용되는 상태 없는 애플리케이션 계층 프로토콜입니다.

HTTP / 1.1 프로토콜 (RFC 9112):하이퍼링크 로그인이 보입니다.
HTTP 의미론 (RFC 9110):하이퍼링크 로그인이 보입니다.

예시 요청:
/hello.txt HTTP/1.1 받아보세요
User-Agent: curl/7.64.1
Host: 하이퍼링크 로그인이 보입니다.
Accept-Language: en, mi

샘플 답변:
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

안녕하세요, 세상! 제 콘텐츠에는 CRLF가 뒤에 붙어 있습니다.

소켓이 요청을 보냅니다

소스 코드는 다음과 같습니다:
소스 코드는 HTTP 및 HTTPS 프로토콜로 요청을 전송하는 것을 지원합니다. 아래에 보시다:



연결: 가까운 거리 vs 생존 유지(keep-alive)

ReadToEndAsync를 사용해 응답에서 모든 데이터를 읽는다면, 연결을 닫기(close)로 설정해야 합니다. 유지(keep-alive)로 설정하면 ReadToEndAsync 응답이 멈춥니다. 멈추지 않는 이유: 많은 웹 서버(예: Nginx, Apache, 특정 API 게이트웨이)는 클라이언트가 소켓을 쓰는 네이티브이거나 서버가 유휴 타임아웃(보통 5초로 설정)을 트리거할 경우 TCP 연결을 종료하기 위해 FIN 패킷을 적극적으로 시작합니다.

HTTP 파이프라인, 여러 요청을 동시에 전송하는 방법:하이퍼링크 로그인이 보입니다.

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

FDD8은 다음 데이터 블록의 크기(바이트 단위)를 지정하는 16진수 숫자입니다. fdd8을 16진수에서 10진수로 변환하면 65,016바이트가 됩니다. 즉, fdd8과 CRLF 바로 뒤에는 65,016바이트의 데이터가 있습니다. 그 이후에는 데이터 블록이 더 많아질 수 있으며, 0 크기의 블록을 만나면 전송이 완료되었음을 나타냅니다.

FDD8은 수신자에게 다음 데이터 블록 길이가 65,016바이트임을 알립니다.




이전의:HTTP(s) 테스트 사이트 요약 (지속적으로 업데이트됨)
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com