2017-12-01 1 views
0

C++ 응용 프로그램의 일부 데이터를 동일한 컴퓨터의 Apache 서버로 보내려고합니다. 아파치 서버에 POST 요청을 보내기 위해 일부 C++ 코드를 작성했습니다. index.php 페이지의 PHP 스크립트는 데이터를 수집하여 웹 페이지에 출력해야합니다.Apache 웹 서버에 C++로 POST 요청 보내기

내 C++ 코드 : 내 post_req 문자열

 void send_post() 
     { 
     portno = 80; 
     sockfd = socket(AF_INET, SOCK_STREAM, 0); 
     if (sockfd < 0) 
     { 
      cout << "ERROR opening socket" << endl; 
     } 
     else {cout << "Socket opened -> ";} 

     server = gethostbyname("localhost"); 
     if (server == NULL) 
     { 
      cout << "ERROR, no such host" << endl; 
      exit(0); 
     } 
     bzero((char *) &serv_addr, sizeof(serv_addr)); 
     serv_addr.sin_family = AF_INET; 
     bcopy((char *)server->h_addr, (char*)&serv_addr.sin_addr.s_addr,server->h_length); 
     serv_addr.sin_port = htons(portno); 

     if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) 
     { 
     cout << "ERROR connecting" << endl; 
     } 
     else {cout << "Connected -> ";} 
     bzero(upcbuffer,512); 
     sprintf(upcbuffer, "%s", post_req.c_str()); 
     z = write(sockfd,upcbuffer,strlen(upcbuffer)); 
     if (z < 0) 
     { 
     cout << "ERROR writing to socket"; 
     } 
     else {cout << "Wrote successfully to socket" << endl;} 
     close(sockfd); 
     cout << "Socket closed now" << endl; 
     } 

: 나는 아무것도 볼 수 없습니다 슬프게도

<?php 
print_r($_POST); 
?> 

의 index.php에

post_req = "POST /index.php HTTP/1.1\r\nHost: localhost\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 8\r\n\r\ntesttest\r\n"; 

내 PHP 코드 색인 페이지. POST 요청의 형식이 올바른지 확인합니다. 문제를 해결하도록 도와 줄 수 있습니까?

답변

1

어디에서 볼 수 있습니까? 웹 서버로부터 응답을 받으려면 send/write 직후 소켓을 읽지 말고 소켓에서 읽으려고 시도해야합니다.

또한 네트워크 프로그램과 관련하여 좀 더 자신감을 가지라고 제안합니다. 답변에 대한

http://beej.us/guide/bgnet/output/html/multipage/index.html

+0

감사 : 여기 읽고 상록를 얻을. POST 요청을 진행 한 index.php 페이지에서 뭔가를 볼 것으로 예상됩니다. 서버에서 응답 할 필요가 없습니다. – Podarce

+0

당신이 말하는 방식에서 나는 브라우저에서 어떤 것을 볼 것으로 예상되는 인상을 받고 있지만 그렇지 않을 것입니다. 귀하의 코드는 '브라우저'이며 거기에 결과를 '보아야'합니다 (즉, 읽음). – marom

+0

정확하게, 미심쩍어합니다. 나는 index.php 페이지에서 브라우저에 어떤 것을 볼 것으로 예상한다. PHP에서 index.php 페이지를 사용하여 서버에서 $ _POST 변수를 가져올 수없는 이유를 이해할 수 없습니다. 서버는 일단 내 요청을 받으면 http를 통해 메시지로 응답해야합니다. 어떤 경우 든 POST 요청의 "본문"으로 보낸 문자열을보아야합니다. 요청이 올바른 형식이어야한다는 것이 확실하기 때문입니다. – Podarce