Python客户端C++服务器连接拒绝

2024-09-28 22:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

<> >我尝试使用Python作为客户端和C++作为服务器运行客户机-服务器应用程序。在

这两台机器在不同的机器上——现在我在我的MacBookPro上运行python客户机,服务器是我的linux桌面。在

我可以通过ssh连接到我的linux设备,如下所示:

ssh username@address.hopto.org

然后输入我的密码

尽管可以通过ssh进行无问题的ssh,但我无法让端口/套接字连接正常工作。在

下面是我的python代码:

^{pr2}$

这里是我的C++服务器(它从这个站点借用:http://www.cs.utah.edu/~swalton/listings/sockets/programs/part2/chap6/simple-server.c

#define MY_PORT     9999
#define MAXBUF      1024

int main(int Count, char *Strings[])
{   int sockfd;
    struct sockaddr_in self;
    char buffer[MAXBUF];

    /*---Create streaming socket---*/
    if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
    {
        perror("Socket");
        exit(errno);
    }

    /*---Initialize address/port structure---*/
    bzero(&self, sizeof(self));
    self.sin_family = AF_INET;
    self.sin_port = htons(MY_PORT);
    self.sin_addr.s_addr = INADDR_ANY;

    /*---Assign a port number to the socket---*/
    if ( bind(sockfd, (struct sockaddr*)&self, sizeof(self)) != 0 )
    {
        perror("socket--bind");
        exit(errno);
    }

    /*---Make it a "listening socket"---*/
    if ( listen(sockfd, 20) != 0 )
    {
        perror("socket--listen");
        exit(errno);
    }

    /*---Forever... ---*/
    while (1)
    {   
        int clientfd;
        struct sockaddr_in client_addr;
        int addrlen=sizeof(client_addr);

        /*---accept a connection (creating a data pipe)---*/
        clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen);
        printf("%s:%d connected\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

        /*---Echo back anything sent---*/
        send(clientfd, buffer, recv(clientfd, buffer, MAXBUF, 0), 0);

        /*---Close data connection---*/
        close(clientfd);
    }

    /*---Clean up (should never get here!)---*/
    close(sockfd);
    return 0;
}

实际上,我在python/客户端尝试了两种不同的方法:

如果我写下以下内容:

client.connect(('username@address.hopto.org', 9999))

我得到这个错误: 插座盖错误:[Errno 8]提供了nodename或servname,或未知

但是,如果我这样做:

client.connect(('address.hopto.org', 9999))

没有用户名部分…我得到这个错误:

socket.error: [Errno 61] Connection refused

我想这是因为我的Linux机器上有一个密码,它“阻塞”了连接,但我不知道如何在这里包含它。在

我是一个网络代码的初学者,所以很多这对我来说是非常陌生的。在


Tags: self服务器client机器portaddresssinsocket
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:12

拒绝连接通常意味着可以访问主机,但端口未打开。
可能是您的请求被防火墙阻止,或者您的服务器运行不正常。在

以避免防火墙问题。我建议您可以在服务器所在的同一个机器上运行python脚本,并使用127.0.0.1先连接它。在

相关问题 更多 >