Python 局域网上的服务器/客户端应用程序超时错误
我有两个程序:server.py和client.py。我需要能够在我的主PC上使用server.py,在笔记本电脑上使用client.py。运行它们时,我从client.py获得以下错误: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
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
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用作服务器,它有一个内部IP192.168.0.2
-这是内部IP…@sempiedram我试用了您的脚本,在将localhost
更改为我的内部IP地址后,它们成功执行。对于localhost
我也有同样的错误…非常感谢。是的,我确信我已经尝试过在服务器上使用192.168.0.2,但是它给了我一个错误,或者别的什么。但它现在起作用了!谢谢。@sempiedram,这是一个很好的问题,因为它证明了localhost
和internalip
是两个不同的东西