【发布时间】:2017-07-15 07:37:06
【问题描述】:
所以我最近开始测试套接字,并且我设法创建了一个服务器和客户端,当我在同一台电脑上运行它们时它们都可以协同工作。但是,当我将服务器放在另一台计算机上时,它给了我以下错误:“”TimeoutError:[WinError 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应""
这是我的服务器:
import socket
import pyautogui
import os
computerIP = socket.gethostbyname(socket.gethostname())
def Main():
host = computerIP
port = 5000
value = 0
mySocket = socket.socket()
mySocket.bind((host,port))
mySocket.listen(1)
conn, addr = mySocket.accept()
print ("Connection from: " + str(addr))
while True:
data = conn.recv(1024).decode()
if not data:
break
elif data == "shift":
pyautogui.keyDown("shift")
elif data == "relshift":
pyautogui.keyUp("shift")
elif data == "logout":
os.popen("shutdown -l")
elif data == "click":
pyautogui.click()
pyautogui.click()
print ("from connected user: " + str(data))
data = str(data).upper()
print ("sending: " + str(data))
conn.send(data.encode())
conn.close()
if __name__ == '__main__':
Main()
我的客户:
import socket
def Main():
host = #same ip as server
port = 5000
mySocket = socket.socket()
mySocket.connect((host,port))
message = input(" -> ")
while message != 'q':
mySocket.send(message.encode())
data = mySocket.recv(1024).decode()
print ('Received from server: ' + data)
message = input(" -> ")
mySocket.close()
if __name__ == '__main__':
Main()
操作系统:Windows 8.1 Python 版本:3.4
我尝试在互联网上查找此内容,但由于我对 python 还很陌生,所以不太了解。
如果有什么我需要澄清的,请告诉我。
【问题讨论】:
-
如果通过客户端从您的 PC 访问,主机上的端口 5000 似乎被防火墙阻止。
-
那我该怎么办呢?
-
Lojas,您可以使用
telnet来检查服务器端口是否可以从客户端访问。 -
@VikasTiwari 但是当连接失败时我该怎么办?尝试不同的端口还是什么?
-
如果连接失败,通常意味着端口被防火墙阻止,这就是连接超时的原因。防火墙可以是网络防火墙、应用程序防火墙或系统防火墙。在最简单的情况下,它可能只是一个 Windows 防火墙。尝试打开端口以允许对端口的传入访问。
标签: python python-3.x sockets server client