서버로 보내도록 데이터를 대기열에 추가하려고하면 여러 HTTP 요청에 대한 응답을받을 수 없습니다.lwIP Raw TCP 연결을 사용하여 HTTP 요청에 대해 여러 응답을받을 수 없습니다.
우리는 서버에 연결할 수 있으며 tcp_write() 함수를 사용하여 connected_callback() 함수 (서버에 연결하자마자 호출 됨)에서 즉시 HTTP 요청을 발행 할 수 있습니다. 나는 다음과 같은 구문을 사용하여 두 개의 HTTP의 resquests 이상을 생성하려고 할 경우, :
err_t connected_callback(void *arg, struct tcp_pcb *tpcb, err_t err) {
xil_printf("Connected to JUPITER server\n\r");
LWIP_UNUSED_ARG(arg);
/* set callback values & functions */
tcp_sent(tpcb, sent_callback);
tcp_recv(tpcb, recv_callback);
if (err == ERR_OK) {
char* request = "GET /circuits.json HTTP/1.1\r\n"
"Host: jupiter.info.polymtl.ca\r\n\r\n";
(void) tcp_write(tpcb, request, 100, 1);
request = "GET /livrable1/simulation.dee HTTP/1.1\r\n"
"Host: jupiter.info.polymtl.ca\r\n\r\n";
(void) tcp_write(tpcb, request, 100, 1);
tcp_output(tpcb);
xil_printf("tcp_write \n");
} else {
xil_printf("Unable to connect to server");
}
return err;}
을 나는 서버에 모든 데이터를 보내도록 관리하지만 두 번째 HTTP 요청에 대한 모든 데이터를 수신하지 않습니다. 첫 번째 요청 (JSON 파일)에 대한 페이로드를 인쇄 할 수 있지만 .dee 파일에 대해서는 아무 것도받지 못합니다. lwIP와 함께 HTTP 요청을 대기열에 넣기위한 구체적인 지침이 있습니까?
내 문제를 정확하게 분석하려면 더 많은 코드가 필요하면 자유롭게 말하십시오.
감사합니다.
귀하의 주요 문제는 아마도 귀하가 응답을받는 방법 일 것입니다. 그러나이 코드는 여기에 표시되지 않습니다. 그 외에도 첫 번째 요청을 처리 한 후 서버가 닫힐 수 있습니다. HTTP 파이프 라이닝을 사용하는 경우이 사실을 알고 누락 된 요청을 다시 시도해야합니다. –