1
モジュール「express」でPOSTリクエストを受け取るnodejsサーバがあり、POST要求を送信するためにC++を使用する必要がありますconnect()とsend ()関数は数値> 0を返しますが、私のサーバは何も受け取っておらず、エラーもありません。 これは、サーバーのコードnodejsサーバへのC++ POST要求が失敗しました(ソケットベース)
私のサーバー・コードと私のC++のコードで、私を助けてください、おかげで誰も(私がリクエストを送信するために、JSを使用する場合、それがうまく要求を受信することができますので、私のサーバーは良い実行されます。):!
app.post('/fps', function(req, res){
var fpsFilename = "./native/Data/FpsFile.txt";
console.log('execute the imagequality program');
var exec = require('child_process').exec;
console.log('in fps post');
exec('./native/fps ' + fpsFilename, function(err, data, stderr) {
if(data.length > 1) {
res.json({fps : data});
} else {
console.log('fps file trans error');
}
if(err) {
console.info('stderr from fps:'+stderr);
}
});
});
私のC++コード:
#define IPSTR "127.0.0.1"
#define PORT 4001
#define BUFSIZE 4096
int MyBasicServerConnector::TestConnect()
{
int sockfd,ret,i ,h;
struct sockaddr_in servaddr;
char str1[4096], str2[2048], buf[BUFSIZE], *str;
socklen_t len;
fd_set t_set1;
struct timeval tv;
int isConneted = 0;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("---------------------socket error!\n");
exit(0);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0)
{
printf("---------------------inet_pton error!\n");
exit(0);
}
if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
printf("---------------------connect error!\n");
exit(0);
}
else
{
isConneted = 1;
std::cout <<"---------------------connect success"<<endl;
}
memset(str2, 0, 2048);
//strcat(str2, "name = x\n");
//strcat(str2, "code = x");
//str=(char *)malloc(128);
len = strlen(str2);
//sprintf(str, "%d", len);
memset(str1, 0, 4096);
strcat(str1, "POST /fps HTTP/1.1 \r\n");
strcat(str1, "Host: 127.0.0.1:4001\r\n");
strcat(str1, "Connection: keep-alive\r\n");
strcat(str1, "Content-Length: 7\r\n");
strcat(str1, "Accept: */*\r\n");
strcat(str1, "Origin: http://127.0.0.1:4001\r\n");
strcat(str1, "X-Requested-With: XMLHttpRequest\r\n");
strcat(str1, "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36\r\n");
strcat(str1, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n");
strcat(str1, "Referer: http://127.0.0.1:4001/\r\n");
strcat(str1, "Accept-Encoding: gzip, deflate, br\r\n");
strcat(str1, "Accept-Language: en-US,en;q=0.8\r\n");
if (isConneted > 0)
{
if(send(sockfd,str1 ,strlen(str1),MSG_NOSIGNAL)>0)
{
cout<<"ok\n";
}
else
{
cout<<"xx\n";
}
}
close (sockfd);
return 0;
}
これは誰でも助けてくれますか?これは非常に緊急です、ありがとうございます! – LeoHirasawa
C++の送信とJSがwiresharkを使って送信するものを比較しましたか? – Jonas