Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Can';t从另一台机器连接到python服务器_Python 3.x_Sockets_Networking - Fatal编程技术网

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我添加了另一个可能会干扰我回答的内容