无法从另一台机器连接到python服务器

时间:2017-07-09 17:46:10

标签: python-3.x sockets networking

我正在尝试了解套接字编程/网络,并启动并运行基本服务器。不幸的是,我只能从运行服务器的机器连接到它。我使用telnet localhost 9999从命令提示符连接。这不适用于同一网络上的其他计算机(如在不运行服务器的其他计算机中)。我试过telnet "my local 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 Connecting To 127.0.0.1...Could not open connection to the host, on port 9999: Connect failed

1 个答案:

答案 0 :(得分:3)

UPD

我刚刚注意到您尝试使用127.0.0.1作为IP地址进行连接。该地址总是意味着"这台计算机",所以你基本上尝试从一台机器连接到它自己,因为服务器在另一台机器上而失败了。

您需要找到服务器的IP地址,这是&#34;可见&#34;来自客户端机器。如果他们在同一个本地网络中,我会假设它采用以下常见形式之一:192.168.x.y10.0.0.x10.x.y.z。< / p>

旧答案

如果您使用Windows,请确保防病毒软件和内置防火墙都不会干扰。通常,它们都会阻止任何非标准通信。

最简单的检查方法是在两台机器上临时切换它们。如果这有帮助,请尝试仅在服务器端关闭它们(也应该工作)。如果这有帮助,请将应用程序的例外添加到防病毒和防火墙。