Python 3.x Can';t从另一台机器连接到python服务器
我正在努力学习套接字编程/网络,并有一个基本的服务器启动和运行。不幸的是,我只能从运行服务器的机器连接到它。我使用Python 3.x Can';t从另一台机器连接到python服务器,python-3.x,sockets,networking,Python 3.x,Sockets,Networking,我正在努力学习套接字编程/网络,并有一个基本的服务器启动和运行。不幸的是,我只能从运行服务器的机器连接到它。我使用telnet localhost 9999从命令提示符进行连接。这不适用于同一网络上的不同计算机(如不运行服务器的不同pc)。我尝试了telnet“我的本地ip”9999,但没有成功,在任何地方都找不到解决方案。感谢您的帮助。我正在运行python 3.6.1 这是我的密码 import socket import sys from _thread import * import w
telnet localhost 9999
从命令提示符进行连接。这不适用于同一网络上的不同计算机(如不运行服务器的不同pc)。我尝试了telnet“我的本地ip”9999
,但没有成功,在任何地方都找不到解决方案。感谢您的帮助。我正在运行python 3.6.1
这是我的密码
import socket
import sys
from _thread import *
import webbrowser
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = ""
port = 9999
try:
s.bind((host,port))
except socket.error as e:
print (str(e))
s.listen(5)
def threaded_client(conn):
conn.send(str.encode("welcome, would you like to listen to a song? \n"))
while True:
reply = ""
data = conn.recv(2048)
if data == b's':
conn.send(str.encode("\n hi\n"))
webbrowser.open('https://www.youtube.com/watch?v=DLzxrzFCyOs')
if not data:
break
conn.sendall(str.encode(reply))
print (data)
conn.close()
while True:
conn, addr = s.accept()
print("connected to:" +addr[0]+":"+str(addr[1]))
start_new_thread(threaded_client,(conn,))
当我尝试连接时,这是我收到的消息C:\Users\Douglas Rouse>telnet 127.0.0.1 9999
连接到127.0.0.1…无法在端口9999上打开与主机的连接:连接失败
我刚刚注意到,您尝试使用127.0.0.1
作为IP地址进行连接。这个地址总是意味着“这台计算机”,所以你基本上是尝试从一台机器连接到它自己,这失败了,因为服务器在另一台机器上
您需要找出服务器的IP地址,该地址在客户端计算机上是“可见的”。如果它们在同一个本地网络中,我会假设它是以下常见形式之一:192.168.x.y
,10.0.0.x
,10.x.y.z
旧答案:
如果使用Windows,请确保防病毒软件和内置防火墙都不会干扰。通常,它们都会阻止任何非标准通信
最简单的检查方法是在两台机器上临时切换这两台机器。如果这有帮助的话,试着只在服务器端关闭它们(应该也可以)。如果有帮助,请为您的应用程序添加一个例外情况到防病毒和防火墙中。UPD:
我刚刚注意到,您尝试使用127.0.0.1
作为IP地址进行连接。这个地址总是意味着“这台计算机”,所以你基本上是尝试从一台机器连接到它自己,这失败了,因为服务器在另一台机器上
您需要找出服务器的IP地址,该地址在客户端计算机上是“可见的”。如果它们在同一个本地网络中,我会假设它是以下常见形式之一:192.168.x.y
,10.0.0.x
,10.x.y.z
旧答案:
如果使用Windows,请确保防病毒软件和内置防火墙都不会干扰。通常,它们都会阻止任何非标准通信
最简单的检查方法是在两台机器上临时切换这两台机器。如果这有帮助的话,试着只在服务器端关闭它们(应该也可以)。如果这有帮助,请为您的应用程序添加一个例外,以防病毒和防火墙。在正确缩进thread_客户端函数时适用于我的python3.5。有趣的是,这可能意味着这不是一个与代码相关的问题。请注意,我在Ubuntu 17.04中运行它,似乎您在windows中运行它?是的,我在windows上运行,抱歉,我没想到会提到:127.0.0.0/8-此块被分配用作Internet主机环回地址。由更高级别协议发送到该块中任意地址的数据报应在主机内循环。这通常只使用127.0.0.1/32实现环回,但此块中的任何地址都不应出现在任何网络上[RFC1700,第5页]。正确缩进thread_客户端函数时,python3.5适用于我。有趣的是,这可能意味着这不是代码相关的问题。请注意,我在Ubuntu 17.04中运行了它,似乎您正在windows中运行它?是的,我正在windows上运行,很抱歉没有想到提到:127.0.0.0/8-此块被分配用作Internet主机环回地址。由更高级别协议发送到该块中任意地址的数据报应在主机内循环。这通常仅使用127.0.0.1/32实现环回,但此块中的任何地址都不应出现在任何网络上[RFC1700,第5页].把它们都关掉了avail@douglasrouse我又加了一件事,可能会干扰我的回答。他们两个都拒绝了avail@douglasrouse我添加了另一个可能会干扰我回答的内容