尝试使用 C 中的套接字从 http 网站检索 html 时连接被拒绝

小偷

我制作了一个非常简单的 http 客户端,它可以从 http 网站检索 html 并打印出来。但是在使用 connect() 函数时似乎有一些问题。使用 perror() 我发现它给出了拒绝连接的错误。

这是我的代码

#include <string.h>
#include <stdio.h>
#include <iostream>

#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>

#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
    char *address;
    address = argv[1];

    int c_socket = socket(AF_INET, SOCK_STREAM, 0);

    struct sockaddr_in URLaddress;

    URLaddress.sin_family = AF_INET;
    URLaddress.sin_port = htons(80);
    inet_pton(0,address,&URLaddress.sin_addr.s_addr);
    int con = connect(c_socket, (struct sockaddr*) &URLaddress, 
    sizeof(URLaddress));

    perror("error");

    return 0;
}

这是输入

151.101.13.5

这是输出

error: Connection refused

我正在传递网站的 IP 作为输入。

我已经看到了所有其他类似的问题,但没有得到任何关于如何解决这个问题的答案,因为我尝试使用我的程序的每个网站都会发生这种情况。请告诉如何解决这个问题。

保罗·奥格维

以下版本的代码适用于 Windows/MSC:

int test(void)
{
    char *address;
    int c_socket, con;
    struct sockaddr_in URLaddress;
    char request[] = "GET / HTTP/1.1\r\n\r\n";
    char response[4096];
    WORD wVersionRequested;
    WSADATA wsaData;

    wVersionRequested = MAKEWORD( 2, 2 );

    address = "151.101.13.5";

    if (WSAStartup (wVersionRequested, &wsaData)!= 0) {
        printf("DLL not found\n");
        return -1;
    }
    if ((c_socket = socket(AF_INET, SOCK_STREAM, 0)) ==  INVALID_SOCKET ) {
        printf("socket error: %d\n", WSAGetLastError());
        return -1;
    }

    URLaddress.sin_family = AF_INET;
    URLaddress.sin_port = htons(80);
    URLaddress.sin_addr.s_addr= inet_addr(address);
    con = connect(c_socket, (struct sockaddr*) &URLaddress, sizeof(URLaddress));

    send(c_socket, request, strlen(request), 0);
    recv(c_socket, response, sizeof(response), 0);
    WSACleanup();

    printf ("%s\n",response);

    return 0;
}

回复是:

<title>Fastly error: unknown domain </title>
</head>
<body>
<p>Fastly error: unknown domain: . Please check that this domain has been added to a service.</p>
<p>Details: cache-fra19128-FRA</p></body></html>5¸`¡qu

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 C 中的套接字向 http/https 网站发送 GET 请求

使用套接字发送不带连接头的HTTP请求中的套接字异常

使用Java中的套接字的HTTP 1.1持久连接

异常:connect:尝试连接到Haskell中的TCP套接字时不存在(连接被拒绝)

尝试在Docker守护程序容器中连接http服务器时拒绝连接

尝试抓取网站时连接拒绝错误

在循环中使用UDP套接字时拒绝连接

在C中使用套接字的HTTP请求

Laravel中拒绝使用套接字连接到DB

尝试在 lighttpd.config 中执行 HTTP->HTTPS 时出现拒绝连接错误

C套接字-第二次尝试拒绝连接

使用C和Lua中的套接字从http响应保存图像

在执行docker stop时尝试连接到Docker守护进程套接字时获得的权限被拒绝

C中的队列套接字连接

尝试连接到Docker守护程序套接字时权限被拒绝

尝试连接到 Docker 守护进程套接字时权限被拒绝

docker:尝试连接到Unix上的Docker守护进程套接字时,权限被拒绝:

Portainer:尝试连接到Docker守护进程套接字时获得的权限被拒绝

TCP-IP套接字C:尝试连接到服务器套接字时出现错误的地址错误

尝试连接到Kubernetes中的服务时连接被拒绝

C程序尝试使用套接字时输出奇怪的“ ur message”

python套接字如何使用相同的套接字连接正确重定向http / s请求?

绑定服务器套接字时出错::地址已在使用中。UDP C编程

尝试将数据写入客户端时,C#中的简单套接字服务器意外关闭连接

当我尝试从网站检索 json 元数据时,Python 抛出关键字错误

尝试打开 TCP 套接字时出错 - C++

Docker:尝试连接到unix:///var/run/docker.sock的Docker守护进程套接字时,获得的权限被拒绝

尝试在Windows上的Python 3中使用套接字时Winsock错误10014

FluentFTP-连接时出现错误“尝试从套接字流中读取数据超时!”