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 –