2017-12-01 14 views
0

C++アプリケーションから同じマシンのApacheサーバーにデータを送信しようとしています。 私はapacheサーバーにPOSTリクエストを送るためにいくつかのC++コードを書きました。 index.phpページのPHPスクリプトは、データを収集してWebページに出力する必要があります。Apache Webサーバーに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; 
     } 

:index.phpの

<?php 
print_r($_POST); 
?> 

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

どこに何が見えますか? Webサーバーからの応答を取得するには、送信/書き込み直後にソケットを閉じるのではなく、ソケットから読み取ろうとする必要があります。

私はまた、あなたがネットワークprogramminでいくつかの自信を得ることをお勧めします。あなたの答えのための

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

+0

ありがとう: ここでは、読み常緑樹を取得します。私はindex.phpページにPOSTリクエストに向かった何かがあると思うでしょう。私はサーバーからの返信は必要ありません。 – Podarce

+0

あなたの話し方から、私はあなたがブラウザ上で何かを見たいという印象を受けていますが、あなたはそうではありません。あなたのコードは「ブラウザ」であり、そこに結果を「見る」べきである(すなわち、読まなければならない) – marom

+0

正確には、私が不明であれば申し訳ありません。私は、index.phpページのブラウザで何かを見たいと思っています。 PHPでindex.phpページを使って$ _POST変数をサーバから取得できない理由を理解できません。サーバーは、一度私の要求を受け取り、httpでメッセージに応答する必要があります。いずれにしても、POSTリクエストの "body"として送信した文字列が表示されるはずです。なぜなら、リクエストが正しいものだと確信しているからです。 – Podarce

関連する問題