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

问题描述:

所以我试图运行一个客户端服务器应用程序使用Python作为客户端和C++作为服务器。Python客户端 - C++服务器连接拒绝错误

这两个在不同的机器上 - 现在我在我的macbook pro上运行python客户端,服务器是我的linux桌面。

我能ssh到我的Linux主机,如下:

ssh [email protected] 

,然后输入我的密码

尽管能够与没有问题,SSH,我不能让一个端口/套接字连接上班。

这里是我的Python代码:

import socket, time 

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
client.connect(('[email protected]', 9999)) 
print client.send('Hello world!'), 'bytes sent.' 
time.sleep(0.2) 
print 'Received message:', client.recv(1024) 

这里是我的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; 
} 

其实我已经尝试了两种不同的东西蟒蛇/客户端:

如果我写下面:

client.connect(('[email protected]', 9999)) 

我得到这个错误: socket.gaierror:[错误8]节点名,也不servname提供,或者不知道

但是,如果我做的:

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

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

socket.error: [Errno 61] Connection refused 

我想这是因为我有我的Linux系统中的密码是“堵”的连接,但I D不知道如何将它包含在这里。

我是网络代码的初学者,所以很多这些对我来说很陌生。

+0

连接地址将是一个IP地址(127.0.0.1)或DNS名称(address.hopto.org)。 @符号用于电子邮件。您可以telnet address.hopto.org 9999以查看服务器是否启动。在服务器本地的盒子以及远程盒子上试试它。你也可以看看netstat -alnp |服务器上的grep 9999。您正在寻找LISTEN符号。 –

拒绝连接通常表示主机可达,但端口未打开。
可能是您的请求被防火墙阻止或您的服务器运行不正常。

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