2011-04-12 3 views
0

그래서 저는 C++로 간단한 HTML 포워딩을 가지고 놀았습니다. 많이 성취하지 못했고 백본에 몇 가지 질문이 있습니다.HTML 전달

첫 번째 : 단순히 HTML 데이터 및 연결을 전달하기 위해 소켓 라이브러리 이외의 특수 라이브러리를 사용해야합니까?

두 번째 : 클라이언트가 HTML 서버에 연결하면 TCP 연결이 열린 상태로 유지됩니까? 또는 데이터가 전송되면 닫힙니까?

세 번째 : 데이터를 클라이언트에서 서버로 전달할 때 패킷에 대상 주소가 포함됩니다. 기술적으로이 주소를 읽고 포트 80을 통해 서버에 연결하여 개방 상태로 유지하고 새로 열린 포트로 보내고받을 수 있어야합니다. 내가해야 할 일이 있니? 모든 시간 제약? 클라이언트와 서버간에 직접 모든 단일 패킷을 직접 전달하면 웹 사이트가 클라이언트에 올바르게 표시됩니다. 맞습니까?

적어도 모든 외부 라이브러리를 유지하는 것이 좋습니다. 그러나 필요한 경우 필요한 모든 라이브러리를 포함하도록 프로그램을 확장 할 수 있습니다.

지금까지 웹 사이트는 작동하지 않지만 양 당사자간에 데이터를주고 받았습니다. 먼저

[platform] :: windows.primary && posix_compliant.secondary

+0

코드를 원하십니까? 나는 필요한 것을 제공 할 수있다. – ultifinitus

+0

HTTP 포워딩을 의미합니까? HTML은 언어이고, HTTP는 TCP 위에있는 프로토콜입니다. – MSalters

+0

필자는 본질적으로 프록시 서버를 의미합니다. 차이점은 패킷의 목적지에 대해 추가로 필요한 제어를 제공합니다 ...(편집) 나중에, 나는 그 구별을 생각하지 못했다. 어떤 혼란에 대해서도 유감스럽게 생각한다. – ultifinitus

답변

1

: 없음 다른 특별한 라이브러리를 필요로하지하지만 어느 정도 바퀴를 재발 될 수 있습니다 그 중 하나를 사용하지 않습니다.

둘째 : 아니오, HTTP는 비 연결 프로토콜입니다.

세 번째 : HTTP 세션은 요청 헤더로 시작되며 요청 헤더는 POST와 비슷합니다. POST는 둘 이상의 패키지를 사용할 수 있으며 그 동안 연결은 열린 상태로 유지됩니다. 서버가 시간을 잘 보낼 수 있습니다.

libCURL을 사용하지 않을 수도 있습니다. (그 소스는 C로되어 있으며 모 놀리 식이지만 일반적으로 사용됩니다).

+0

1. 환상적! 나는 그것이 바퀴를 재발 명할 것이라고 생각했다. ... 2. Ohh는 그 다음 의미가있다. 비 연결의 프로토콜로서, 내가 서버로부터 무엇인가를받을 수있는 유일한 시간은 클라이언트가 뭔가를 시작했을 때 뿐이다. 맞습니까? 3. libCURL을 살펴 보겠습니다. (어느 정도는 이미 가지고 있습니다.) 4. 도움을 주셔서 감사합니다! – ultifinitus

+0

두 번째로는 지속적인 연결 (HTTP가 TCP의 맨 위에 있기 때문에 연결이 끊어지기가 다소 어려움)이 될 수 있습니다. HTTP 1.0은 지속적 연결을 지원하지 않지만 HTTP 1.1은 지원합니다. –

+0

좋아, 내가 몇 가지 테스트를하고 있었는데 google.com 내 연결을 열어 두었지만, 내 클라이언트의 패킷을 보냈을 때 소켓에서 데이터를받지 못했습니다. 실제로 두 개가있었습니다 ... 각 패킷과 다시 연결해야합니까? ? – ultifinitus

0

꽤 많은 연구를 한 후에 내가 노력한 가장 큰 도움은 this website입니다.

This one도 상당히 도움이되었습니다.

LibCURL은 확실히 방법입니다. 그것은 종류의 일자, 그리고 .. 두 번째 사이트에서

인용 모든 C에 있지만, 모든 것을 다시 실행보다 훨씬 쉽게 : 대부분의 네트워크 프로토콜과 마찬가지로
, HTTP는 클라이언트 - 서버 모델을 사용합니다 : HTTP 클라이언트가 열립니다 HTTP 서버에 요청 메시지를 보냅니다. 그런 다음 서버는 대개 요청 된 자원을 포함하는 응답 메시지를 리턴합니다. 응답을 전달한 후, 서버는 연결을 닫습니다 (HTTP는 상태가없는 프로토콜, 즉 트랜잭션 사이의 연결 정보를 유지하지 않음).

관련 문제