我有两个程序:server.py和client.py。我需要能够在我的主PC中使用server.py,并从我的笔记本电脑中使用client.py。当我运行它们时,我从client.py得到以下错误:
TimeoutError: [WinError 10060]
我已经在我的PC(运行Windows 7)和我的笔记本电脑(运行Windows 8)中禁用了防火墙。
如何让他们连接?
我尝试过的一些事情:
TimeoutError
更改为ConnectionRefusedError
。我的电脑的IP是192.168.0.2,我确信这是因为我有一台运行在端口80的Apache服务器,而且它可以工作(我可以从笔记本电脑访问)。
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:
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")
答案 0 :(得分:1)
您只需将localhost
脚本中的socket.gethostname()
或server.py/client.py
更改为服务器的实际内部IP 地址即可。然后它会工作!
如果您想了解更多相关原因,我建议您阅读this post
这深刻地解释了机器的localhost/127.0.0.1
和internal ip
之间的差异,这些差异被错误地认为是相同的,但实际上它们不是。