2012-11-06 4 views
1

gSoap을 다운로드하고 wsdl의 소스 코드를 생성했습니다. 그리고 서버에 연결하여 요청을 보낼 수 있습니다.Gsoap Http 이벤트 콜백

그러나 바이트 전송, 바이트 recv 같은 HTTP 이벤트를 잡을 수있는 방법을 이해할 수 없습니다. 이 문서를 읽었습니다. http://www.cs.fsu.edu/~engelen/soapdoc2.html.

하지만 내가 필요한 것을 찾을 수 없습니다. 기능 : fsend을 찾았습니다. 이 기능은 서버에 요청을 보낼 때 실행되고 있음을 이해합니다. 이런 식으로해야합니까?

service.fsend = Custom; 

여기에서 Custom은 내 콜백입니까?

다른 콜백은 ffiltersend입니다. 이 기능은 요청이 전송 될 때 실행되는 것으로 알고 있습니다. 나는 그것을 사용한다. 하지만이 메서드에서 마지막 매개 변수가 size_t에 대한 포인터라는 것을 이해하지 못합니다. 이 포인터에서 값을 얻고 2로 나누면 실제 바이트 수가 계산됩니다. 왜?

+0

은 바이트입니다. recv는 매우 의미가 있습니다. – billz

+0

나를 보내 더 많은 시간을 보내고, 원인이 gsoap을 통해 파일을 업로드 ... 그 이유는 바이트 recv 나를 위해 중요하지 ... 그리고 아직도 어떻게 이해할 수 없다 .... –

답변

0

보내고받은 바이트 수에 대한 통계를 얻고 파일 시스템에 인바운드 및 아웃 바운드 메시지를 기록하려면 gSOAP 소프트웨어와 함께 제공되는 "logging plugin"을 사용하십시오. 인바운드 및 아웃 바운드 메시지 로깅 대상을 설정하려면이 기능을 사용하여 다음

#include "plugin/logging.h" // this file is in the gSOAP distro path 
... 
soap_register_plugin(soap, logging); 

:

첫째로 플러그인을 등록 할 파일 기술자가 두 번째 인수 포인트로 전달

soap_set_logging_inbound(struct soap*, FILE*); 
soap_set_logging_outbound(struct soap*, FILE*); 

로깅 전후에 열고 닫을 수있는 열린 파일입니다. 로깅을 사용하지 않으려면 두 번째 인수로 NULL을 사용하십시오. 통계를 획득하기

, 즉 메시지 크기 바이트 수, 사용 : 두 번째 및 세 번째 인수는이 호출에 의해 업데이트 될

soap_get_logging_stats(struct soap*, size_t *sent, size_t *recv); 

.

그게 전부입니다.

자신 만의 메시지 처리 콜백을 사용하려면 plugin/logging.c 파일에서 어떻게 수행되는지 배우는 것이 좋습니다. 이 파일은 짧습니다.