[英]Python Client - C++ Server Connection Refused Error
所以我试图运行一个客户端 - 服务器应用程序,使用 Python 作为客户端,使用 C++ 作为服务器。
两者在不同的机器上 - 现在我在我的 macbook pro 上运行 python 客户端,服务器是我拥有的 linux 桌面。
我可以通过 ssh 进入我的 linux 机器,如下所示:
ssh username@address.hopto.org
然后输入我的密码
尽管能够毫无问题地进行 ssh,但我无法使端口/套接字连接正常工作。
这是我的python代码:
import socket, time
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('username@address.hopto.org', 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;
}
我实际上已经为 python/客户端尝试了两件不同的事情:
如果我写以下内容:
client.connect(('username@address.hopto.org', 9999))
我收到此错误: socket.gaierror: [Errno 8] nodename 或 servname 提供,或未知
但是,如果我这样做:
client.connect(('address.hopto.org', 9999))
没有用户名部分...我收到此错误:
socket.error: [Errno 61] Connection refused
我想这是因为我的 Linux 机器上有一个密码“阻止”了连接,但我不知道如何将它包含在这里。
我是网络代码的初学者,所以很多这对我来说都很陌生。
连接被拒绝通常意味着主机可访问但端口未打开。
可能是您的请求被防火墙阻止或您的服务器运行不正常。
避免防火墙问题。 我建议您可以在与服务器相同的机器上运行您的 python 脚本,并首先使用 127.0.0.1 连接它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.