0
在你將這篇文章標記爲重複之前:我嘗試了所有可以在互聯網和計算器周圍找到的「解決方案」,但沒有任何工作,主要是因爲某些函數被棄用或者我錯過了一些圖書館或其他東西。使用C++的HTTP POST請求
我得到了下面的代碼here(第二個答案,因爲我不能讓libcurl的工作),但對我來說,這並不工作,原因是Visual Studio 2015年告訴我,因爲它棄用使用GetAddrInfoW()
,而不是gethostbyname()
,所以我試着做所以,最終是這樣的:
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
return;
}
SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct hostent* host = new hostent();
GetAddrInfoW((PCWSTR)"www.google.com", (PCWSTR)"http", nullptr, (PADDRINFOW*)host);
SOCKADDR_IN SockAddr;
SockAddr.sin_port = htons(80);
SockAddr.sin_family = AF_INET;
SockAddr.sin_addr.s_addr = *((unsigned long*)"192.168.xxx.xxx");
if (connect(Socket, (SOCKADDR*)(&SockAddr), sizeof(SockAddr)) != 0)
{
return;
}
send(Socket, "GET/HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n", strlen("GET/HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n"), 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();
這不會因爲一個空指針
的工作既不是(Visual Studio中說:異常引發的0x00AE5F02在PROJECT1.EXE:0000005:訪問衝突在位置00000000 [閱讀。 ..])
這對我來說是完全合乎邏輯的,但我不知道如何正確地做到這一點,所以如果有人這樣做,請告訴我現在我是如何有點沮喪。
哇,這是愚蠢的,thx –