Server/Client LAN 上的应用程序超时错误

Server/Client application TimeoutError on LAN

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

TimeoutError: [WinError 10060]

我的个人电脑(运行s Windows 7)和笔记本电脑(运行s Windows 8)都禁用了防火墙。

如何让他们连接?

我尝试过的一些东西:

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

Python 版本:个人电脑:3.5.2,笔记本电脑:3.4.1

代码

server.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()

client.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.1internal ip的区别,误以为是同一东西,其实不是。