【问题标题】:python socket programming : error trying to connect to serverpython套接字编程:尝试连接服务器时出错
【发布时间】:2020-09-11 09:29:55
【问题描述】:

我是 python 套接字编程的初学者,我必须从服务器向客户端发送消息。我有 2 个 python IDLES,一个用于服务器,一个用于客户端。我已经制作了没有错误的服务器文件,但是当我在客户端文件中创建连接套接字并尝试连接到服务器时出现错误:

clientSocket.connect((servername,port))
ConnectionRefusedError: [WinError 10061] no connection could be made because the target machine actively refused it

我不知道如何处理此错误,如果您能帮助我指导我,我将不胜感激。 先感谢您。 我的代码:

服务器:

from socket import *

port = 1234
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('',port))
serverSocket.listen()
print("Server has started")

data = "Network labs"
while True:
    connectionSocket , addr = serverSocket.accept()
    connectionSocket.send(data)
    connectionSocket.close()

客户:

from socket import *

port = 1234
servername = 'localhost'
clientSocket = socket(AF_INET,SOCK_STREAM)
clientSocket.connect((servername,port)) #this is where the error happens

【问题讨论】:

  • 可能是权限问题或防火墙问题。尝试使用 > 5000 的端口并检查操作系统的防火墙规则。
  • 你的客户端和服务器真的在同一个主机上运行吗?
  • @tdelaney 尝试端口 > 5000 为什么? 1024以下的端口需要特权。而且很难看出它是如何成为 localhost 中的防火墙问题的。
  • @user207421 - 我依赖于操作系统。 5000+ 是一个可能的范围,但不能保证。
  • @tdelaney 我只做了 30 年,但在我绑定过套接字的每个操作系统中,它都是 1024。如果你有反例是 5000,甚至是 1025,请出示。

标签: python sockets tcp


【解决方案1】:

我会逐渐尝试了解问题出在哪里。 尝试找出问题所在:

  1. 编写一个可以在线获取的示例,它肯定会起作用,然后您就会知道问题出在您的代码中。
  2. 尝试在不同的计算机或虚拟机上使用相同的代码。如果它在那里工作,你就会知道问题出在环境上。
  3. 试着找到有类似问题的人,你通常不会是第一个。 - Errno 10061 : No connection could be made because the target machine actively refused it ( client - server ) - 这看起来不错。
  4. 检查您的服务器是否正常运行,在运行客户端之前检查是否有人在监听 1234 端口。 (使用 netstat)

与主题无关但会改善您的编码的一些事情: 1.不要导入*,这只是一个简单的名字冲突的方法。 2. 使用约定,它只是让所有内容都更易于阅读。 https://www.python.org/dev/peps/pep-0008/

当然你可以忽略所有这些,这只是一个建议。

【讨论】:

    猜你喜欢
    • 2017-07-08
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多