【问题标题】:Simple TCP Server in Python doesn't work onlinePython中的简单TCP服务器不能在线工作
【发布时间】:2021-05-04 19:17:24
【问题描述】:

我正在关注this 教程,因为我一般对 TCP 或网络不太了解,它可以在 localhost 上运行,但是当我将其切换到我的真实 IP 并请我的朋友试用客户端时在他的系统上,它没有连接,给出错误:

TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

如果它因为“WinError”部分而在这里很重要,我在 Ubuntu 上,我的朋友在 Windows 上。

server.py

import socket

HOST = 'my ip'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

client.py

import socket

HOST = '86.184.147.101'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)

print('Received', repr(data))

我认为这可能只是一些显而易见的事情,但我在 stackoverflow 或互联网的其他部分找不到任何相关问题。干杯!

【问题讨论】:

    标签: python sockets networking tcp


    【解决方案1】:

    其中一个可能的问题是您的家庭路由器/防火墙上没有启用端口转发。确保您的家庭路由器将端口 65432 转发到您运行服务器的本地计算机。谷歌“端口转发”为您的路由器型号找到如何配置它。

    【讨论】:

    • 我转发了65432!忘记在帖子里提到了。
    【解决方案2】:

    检查您是否能够使用 ping 命令 ping 到服务器。检查您的计算机/服务器的 DNATing 规则。 另外,请检查您的防火墙是否允许其他设备连接。

    【讨论】:

    • 我不敢相信我没有想到这一点!我在ufw中允许了65432,现在它可以工作了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 2019-06-20
    • 2011-12-17
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多