Python 局域网上的服务器/客户端应用程序超时错误

Python 局域网上的服务器/客户端应用程序超时错误,python,sockets,networking,lan,Python,Sockets,Networking,Lan,我有两个程序:server.py和client.py。我需要能够在我的主PC上使用server.py,在笔记本电脑上使用client.py。运行它们时,我从client.py获得以下错误: TimeoutError: [WinError 10060] import socket server_port = 2569 server_address = "192.168.0.2" server_socket = socket.socket(socket.AF_INET, socket.SOCK

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

TimeoutError: [WinError 10060]
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")
我已经在我的电脑(运行Windows 7)和笔记本电脑(运行Windows 8)中禁用了防火墙

我如何让他们连接

我尝试过的一些事情:

  • 在PC上创建防火墙端口规则
  • 在两台计算机中禁用防火墙
  • 使用不同的端口
  • 将服务器地址从“localhost”更改为socket.gethostname(),这会将错误从
    TimeoutError
    更改为
    ConnectionRefusedError
我的电脑的IP是192.168.0.2,我确信这一点,因为我有一台Apache服务器运行在端口80,并且它可以工作(我可以从笔记本电脑上访问)

Python版本:PC: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:

TimeoutError: [WinError 10060]
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
脚本中的
localhost
socket.gethostname()
更改为服务器的实际内部ip地址。那就行了

如果你想了解更多为什么会发生这种情况,我建议你阅读
这就深刻地解释了
localhost/127.0.0.1
和机器的
内部ip
之间的区别,它们被错误地认为是同一件事,但事实上并非如此。

如何找到内部ip呢?@sempiedram您使用的是什么操作系统?实际上,如果您在帖子中提到将PC用作服务器,它有一个内部IP
192.168.0.2
-这是内部IP…@sempiedram我试用了您的脚本,在将
localhost
更改为我的内部IP地址后,它们成功执行。对于
localhost
我也有同样的错误…非常感谢。是的,我确信我已经尝试过在服务器上使用192.168.0.2,但是它给了我一个错误,或者别的什么。但它现在起作用了!谢谢。@sempiedram,这是一个很好的问题,因为它证明了
localhost
internalip
是两个不同的东西