【问题标题】:library socket: open port库套接字:打开端口
【发布时间】:2015-05-16 09:07:35
【问题描述】:

我尝试用python创建一个小游戏,但遇到了一个问题。

只要我在本地工作(同一台计算机或私有 IP 地址)就没有问题,但如果我使用 IP,则套接字无法连接。

服务器:

import socket

co_prin = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
co_prin.bind(('', 9000))
co_prin.listen(10)
co,info=co_prin.accept()

print('connexion recu')

co.close()
co_prin.close()

客户:

import socket

co_serv=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
adresse='81.56.76.61'
co_serv.connect((adresse, 9000))
print("Connecté.")
co_serv.close()

如果我通过 'localhost' 更改地址没有问题。

有人告诉我原因是 python 无法打开端口。我想知道是否有解决方案可以解决或绕过其他用户易于使用的问题。 (我总是可以使用 hamachi 创建本地网络或手动打开端口,但共享我的程序并不容易)。

编辑,客户端代码中的错误:Traceback(最近一次调用最后一次): 文件“”,第 5 行,在 co_serv.connect((地址,9000)) socket.error: [Errno 10061] 无法建立连接,因为目标机器主动拒绝了它

【问题讨论】:

  • 当您说“如果我使用 IP”时,您是指在客户端还是在服务器中?
  • 您确定81.56.76.61 是正确的地址吗?这段代码对我有用。
  • 我在客户端使用 IP。我在mon-ip.com 上得到它,我可以尝试在另一个网站上得到它。

标签: python sockets port


【解决方案1】:

您没有使用您的实际计算机 IP。您正在使用您的公共 IP 地址。

打开 cmd/command.com 并输入命令:ipconfig

您将在那里看到一个完全不同的 IP(IPv4/IPv6 地址):

你很可能想要这个(自己做这个!):

然后,如果您希望网络之外的人想要访问您的计算机,则必须将端口从路由器端口转发到您的网络 IP 地址。

如果您只是在尝试使用 python,最好使用127.0.0.1localhost 作为 IP 地址。

【讨论】:

  • 问题是从网络中的连接传递到 oustide。谢谢你的解释。我会尝试移植。
  • 没问题,请将其标记为已解决,以便其他人也知道。
猜你喜欢
  • 2021-01-23
  • 2012-09-04
  • 2013-04-02
  • 1970-01-01
  • 2013-10-25
  • 2016-04-10
  • 1970-01-01
  • 2014-04-16
  • 2016-02-15
相关资源
最近更新 更多