#include <Windows.h> #include <iostream> #include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
int Curl_Get(const char *pszUrl) { char szHost[256] = { 0 }; char *ptr = (char *)pszUrl;
if (_strnicmp(ptr, "http://", 7) == 0) ptr = ptr + 7; else if (_strnicmp(ptr, "https://", 8) == 0) ptr = ptr + 8; else return -1;
int index = 0; while (index < 255 && *ptr && *ptr != '/') szHost[index++] = *ptr++; szHost[index] = '\0';
char *buffer = new char[1024 * 8]; index = sprintf(buffer, "GET %s HTTP/1.1 \r\n" "Host: %s \r\n" "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0 \r\n" "Accept-Type: */* \r\n" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 \r\n" "Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 \r\n" "Connection: Close \r\n\r\n", ptr, szHost); printf("%s \n", buffer);
SOCKADDR_IN addr; SOCKET fd = socket(AF_INET, SOCK_STREAM, 0); addr.sin_addr.S_un.S_addr = 0; addr.sin_port = htons(0); addr.sin_family = AF_INET; index = bind(fd, (const sockaddr*)&addr, sizeof(SOCKADDR_IN)); hostent *p = gethostbyname(szHost);
if (p) { ULONG ai = *(ULONG*)p->h_addr_list[0]; addr.sin_addr.S_un.S_addr = ai; addr.sin_port = htons(80);
index = connect(fd, (const sockaddr*)&addr, sizeof(SOCKADDR_IN)); if (index == NOERROR) { index = send(fd, (const char*)buffer, (int)strlen(buffer), 0); do { index = recv(fd, buffer, 8191, 0); if (index <= 0) { break; } buffer[index] = '\0'; printf("%s \n", buffer); } while (TRUE); } } closesocket(fd); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; WSAStartup(0x0202, &wsaData); Curl_Get("http://cn.bing.com/");
WSACleanup();
system("pause"); return 0; }
|