gpt4 book ai didi

python - LAN 上的服务器/客户端应用程序超时错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:04 25 4
gpt4 key购买 nike

我有两个程序:server.py 和 client.py。我需要能够在我的主电脑上使用 server.py,并在我的笔记本电脑上使用 client.py。当我运行它们时,我从 client.py 收到以下错误:

TimeoutError: [WinError 10060]

我已禁用我的电脑(运行 Windows 7)和笔记本电脑(运行 Windows 8)中的防火墙。

如何让它们连接?

我尝试过的一些事情:

  • 在 PC 上创建防火墙端口规则。
  • 禁用两台计算机中的防火墙。
  • 使用不同的端口。
  • 将服务器地址从“localhost”更改为 socket.gethostname(),这会将错误从 TimeoutError 更改为 ConnectionRefusedError

我的 PC 的 IP 是 192.168.0.2,我确信这一点,因为我有一个 Apache 服务器在端口 80 上运行,并且该服务器可以工作(我可以从我的笔记本电脑访问该服务器)。

Python 版本:PC:3.5.2,笔记本电脑:3.4.1

代码

服务器.py:

import socket
import threading

server_port = 2569
server_address = "localhost"

class ClientThread(threading.Thread):
def __init__(self, client_info):
super(ClientThread, self).__init__()
self.client_info = client_info

def run(self):
socket = self.client_info[0]
bytes_received = socket.recv(100)
print(bytes_received.decode("utf-8"))

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((server_address, server_port))
server_socket.listen(5)

while True:
new_client = server_socket.accept()
ClientThread(new_client).run()

客户端.py:

import socket

server_port = 2569
server_address = "192.168.0.2"

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.connect((server_address, server_port))
server_socket.send(b"message")

最佳答案

您只需将server.py/client.py脚本中的localhostsocket.gethostname()更改为实际的服务器的内部 IP 地址。然后就可以了!

如果您想了解更多为什么会发生这种情况,我建议您阅读 this post它深入解释了localhost/127.0.0.1和机器的内部ip之间的差异,它们被错误地认为是同一件事,但实际上它们不是.

关于python - LAN 上的服务器/客户端应用程序超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com