C++ C++;将数据发送到PHP并处理响应 void SendHardverInfo(){ 德沃德卷宗编号; 如果(获取卷信息(“C:\\”,0,0,&VolumeSerialNumber,0,0,0)==0) { 返回; } UUID-UUID; UuidCreateSequential(&uuid); 系统信息系统信息; GetSystemInfo(&SystemInfo); DWORD ComputerHardwareId1=卷序列号^0x12B586FE; DWORD ComputerHardwareId2=*(DWORD*)(&uuid.Data4[2])^0x5D78A569; DWORD ComputerHardwareId3=(*(WORD*)(&uuid.Data4[6])&0xFFFF)|(SystemInfo.wProcessorArchitecture 0){ int i=0; 而(buffer[i]>=32 | | buffer[i]='\n'| | buffer[i]='\r'){ i+=1; } } 插座; WSACleanup(); printf(link); 返回; //ENDSEND }

C++ C++;将数据发送到PHP并处理响应 void SendHardverInfo(){ 德沃德卷宗编号; 如果(获取卷信息(“C:\\”,0,0,&VolumeSerialNumber,0,0,0)==0) { 返回; } UUID-UUID; UuidCreateSequential(&uuid); 系统信息系统信息; GetSystemInfo(&SystemInfo); DWORD ComputerHardwareId1=卷序列号^0x12B586FE; DWORD ComputerHardwareId2=*(DWORD*)(&uuid.Data4[2])^0x5D78A569; DWORD ComputerHardwareId3=(*(WORD*)(&uuid.Data4[6])&0xFFFF)|(SystemInfo.wProcessorArchitecture 0){ int i=0; 而(buffer[i]>=32 | | buffer[i]='\n'| | buffer[i]='\r'){ i+=1; } } 插座; WSACleanup(); printf(link); 返回; //ENDSEND },c++,C++,您好,我有这个代码,它工作正常。但是在我将GET请求发送到网站后,我想处理答案,因此,例如,在GET完成后,网站返回OK,我想在我的应用程序中处理此OK,我如何才能做到这一点?将GET请求标题更改为此 void SendHardverInfo(){ DWORD VolumeSerialNumber; if (GetVolumeInformation("C:\\", 0, 0, &VolumeSerialNumber, 0, 0, 0, 0) == 0) { return

您好,我有这个代码,它工作正常。但是在我将GET请求发送到网站后,我想处理答案,因此,例如,在GET完成后,网站返回OK,我想在我的应用程序中处理此OK,我如何才能做到这一点?

将GET请求标题更改为此

void SendHardverInfo(){
    DWORD VolumeSerialNumber;

if (GetVolumeInformation("C:\\", 0, 0, &VolumeSerialNumber, 0, 0, 0, 0) == 0)
{
    return;
}

UUID uuid;

UuidCreateSequential(&uuid);

SYSTEM_INFO SystemInfo;

GetSystemInfo(&SystemInfo);

DWORD ComputerHardwareId1 = VolumeSerialNumber ^ 0x12B586FE;

DWORD ComputerHardwareId2 = *(DWORD*)(&uuid.Data4[2]) ^ 0x5D78A569;

DWORD ComputerHardwareId3 = ((*(WORD*)(&uuid.Data4[6]) & 0xFFFF) | (SystemInfo.wProcessorArchitecture << 16)) ^ 0xF45BC123;

DWORD ComputerHardwareId4 = ((SystemInfo.wProcessorLevel & 0xFFFF) | (SystemInfo.wProcessorRevision << 16)) ^ 0xB542D8E1;



//SENDSERVER
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
    return;
}
SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct hostent *host;
host = gethostbyname("www.mysite.com");
SOCKADDR_IN SockAddr;
SockAddr.sin_port = htons(80);
SockAddr.sin_family = AF_INET;
SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
if (connect(Socket, (SOCKADDR*)(&SockAddr), sizeof(SockAddr)) != 0){

    return;
}


char Text[256];
ZeroMemory(Text, sizeof(Text));
sprintf(Text, "%08X-%08X-%08X-%08X", ComputerHardwareId1, ComputerHardwareId2, ComputerHardwareId3, ComputerHardwareId4);

char link[500];
strcat(link, "GET /api/hardverinfo.php?hardverinfo=");
strcat(link, Text);
strcat(link, " HTTP/1.1\r\nHost: www.mysite.com\r\nConnection: close\r\n\r\n");

send(Socket, link, strlen(link), 0);

char buffer[10000];
int nDataLength;
while ((nDataLength = recv(Socket, buffer, 10000, 0)) > 0){
    int i = 0;
    while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
        i += 1;
    }
}

closesocket(Socket);
WSACleanup();

printf(link);
return;
//ENDSEND
}

而不是结尾的标题部分。这将迫使您的php服务器以应用程序可读的格式响应。

为什么不先向我们展示您迄今为止所做的工作?HTTP/1.1 200确定日期:Wed,06 Jul 2016 18:58:06 GMT内容类型:text/html内容长度:0连接:close Set Cookie:u cfduid=d6196ca171eec28bbcc68a393b698107b1467831486;expires=Thu,06-Jul-17 18:58:06 GMT;path=/;domain=.mysite.com;HttpOnly服务器:cloudflare nginx CF-RAY:2be549487a812be2 AMS我得到的是这个,不是PHP文件的echo值,为什么?如果我把recv写入一个文本文件,我得到的是上面的,如果我把recv放入fprint,我得到的是:ïèèèèěěŰ=HpÉu)。ŰuV…尝试像我一样删除所有标题。然后剩下的就是服务器响应。
charbuf[256];memset(buf,NULL,256);recv(套接字,buf,255,空);std::string result=buf;result.erase(0,result.find最后一个(“\r\n\r\n”)+1);如果(buffer!=NULL){FILE*FILE;如果(fopen_s(&FILE,“ASD.txt”,“w”)!=0){return;}fprintf(FILE,“%s”,result);fclose(FILE);
如果我这样做,在%s的txt中我得到(NULL),你应该把result.c_str()放进去,更正并检查
" HTTP/1.1\r\nHost: www.mysite.com\r\nContent-type: application/x-www-form-urlencoded\r\n\r\n";