所以,我想知道是否有可能(很可能没有使用图书馆)阅读原始粘贴/或更好地说使用c ++的网站的html代码。我发现的所有代码/教程都没有用,所以我想知道你们中有些人是否可以帮助我。我想了解这个链接:
该代码似乎正在寻找但我缺少网络和Http类......
bool Http::Connect(YString addr)
{
_socket = Network::CreateConnectSocket(addr, 53); // 53 is the port
return _socket != INVALID_SOCKET;
}
int iResult;
SOCKET ConnectSocket = INVALID_SOCKET;
// holds address info for socket to connect to
struct addrinfo *result = NULL,
*ptr = NULL,
hints;
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP; //TCP connection!!!
//resolve server address and port
iResult = getaddrinfo(addr.c_str(), std::to_string(port).c_str(), &hints, &result);
if (iResult != 0)
{
printf("Network::CreateSocket failed with %s as addr, and %i as port.\nError code: %i.\n", (char*)addr.c_str(), port, iResult);
return INVALID_SOCKET;
}
for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {
// Create a SOCKET for connecting to server
ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);
if (ConnectSocket == INVALID_SOCKET) {
printf("Network::CreateSocket failed with error: %ld\n", WSAGetLastError());
return INVALID_SOCKET;
}
// Connect to server.
iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
if (iResult == SOCKET_ERROR)
{
closesocket(ConnectSocket);
ConnectSocket = INVALID_SOCKET;
printf("Network::CreateSocket failed the server is down... did not connect.\n");
}
}
freeaddrinfo(result);
if (ConnectSocket == INVALID_SOCKET)
{
printf("Network::CreateSocket failed.\n");
return INVALID_SOCKET;
}
u_long iMode = 1;
iResult = ioctlsocket(ConnectSocket, FIONBIO, &iMode);
if (iResult == SOCKET_ERROR)
{
printf("Network::CreateSocket ioctlsocket failed with error: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
return INVALID_SOCKET;
}
char value = 1;
setsockopt(ConnectSocket, IPPROTO_TCP, TCP_NODELAY, &value, sizeof(value));
return ConnectSocket;
Winsock 2 Reading text from a URL这是我收到编码的帖子!
希望有人可以帮我解决这个问题,因为可能xD
答案 0 :(得分:0)
只需在套接字上使用简单的HTTP GET请求:
GET /raw/93HGpGG0 HTTP/1.1\r\nHost: www.pastebin.com\r\n\r\n
你可以使用Boost套接字库。你也可以使用POSIX或winsock来创建没有任何库的套接字:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms737591%28v=vs.85%29.aspx
答案 1 :(得分:0)
您在不使用任何库的情况下要求可能的解决方案。此解决方案使用库但相对容易:
下载libcurl并在Visual Studio中打开 libcurl.sln 。选择您想要的任何配置(调试或发布,静态或动态等)以及是否需要32位或64位,并构建它。完成构建后,在Visual Studio中读取编译器输出,以查看它在何处创建.lib
文件。剪切该lib文件,然后在名为“curl”的源代码之外的某处创建一个新文件夹,并在该文件夹中创建一个名为“lib”的文件夹,并将库粘贴到那里。然后,返回源代码文件夹,将整个include文件夹复制到curl文件夹。
现在,在确定您包含库之后,是时候测试它了。创建一个新的Visual Studio项目,并将此源代码复制到主cpp文件中:
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (!curl) { return -1; }
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if (res != CURLE_OK)
{
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
/* always cleanup */
curl_easy_cleanup(curl);
return 0;
}
结果:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 50px;
background-color: #fff;
border-radius: 1em;
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
body {
background-color: #fff;
}
div {
width: auto;
margin: 0 auto;
border-radius: 0;
padding: 1em;
}
}
</style>
<script type="text/javascript" src="http://gc.kis.scr.kaspersky-labs.com/1B74BD89-2A22-4B93-B451-1C9E1052A0EC/main.js" charset="UTF-8"></script><script type="text/javascript" src="http://gc.kis.scr.kaspersky-labs.com/1B74BD89-2A22-4B93-B451-1C9E1052A0EC/main.js" charset="UTF-8"></script></head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>