我正在尝试将一些数据从c ++应用程序发送到同一台机器上的apache服务器。 我写了一些c ++代码来向apache服务器发送POST请求。 index.php页面上的PHP脚本应该收集数据并将它们输出到网页上。
我的C ++代码:
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;
}
使用我的post_req字符串:
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";
我在index.php上的PHP代码
<?php
print_r($_POST);
?>
可悲的是,我在索引页面上看不到任何内容。 我确定POST请求格式正确。 你能帮我解决这个问题吗?
答案 0 :(得分:1)
您希望在哪里看到什么?要从Web服务器获取回复,您应该尝试从套接字读取而不是在发送/写入后立即关闭它。
我还建议你对网络programmin更有信心。 在这里你会得到一个常青树: