【问题标题】:Python Socket not on local networkPython Socket不在本地网络上
【发布时间】:2015-06-10 07:36:57
【问题描述】:

我使用套接字编写了一个基本的服务器-客户端脚本,并且在我的 LAN 上一切正常,但是当我尝试连接到不在我的 LAN 中的客户端时它不起作用。我还转发了这些端口

这是服务器

###SERVER####


def ChatConnection():
    print('Waiting for a connection...\n')
    SOCKET = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    SOCKET.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    HOST = ''
    PORT = 8989
    SOCKET.bind((HOST, PORT))
    SOCKET.listen(1)
    CONN, ADDR = SOCKET.accept()
    print('You can now chat')
    while True:
        MSG = str(input('\n[YOU]> '))
        while not MSG: MSG = str(input('\n[YOU]> '))
        CONN.send(MSG.encode())
        print('\nAwaiting reply...')
        REPLY = CONN.recv(4096).decode()
CONN.close()

这是客户

###CLIENT###



def ChatConnection():
    print('Waiting for a connection...\n')
    while True:
        try:
            HOST = SERVER EXTERNAL IP
            PORT = 8989
            SOCKET = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            SOCKET.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            SOCKET.connect((HOST, PORT))
            print('You can now chat with server')
            print('\nWaiting for server...')
            while True:
                REPLY = SOCKET.recv(4096)
                print('\n[USER]> %s'%REPLY.decode())
                MSG = str(input('\n[YOU]> '))
                while not MSG: MSG = str(input('\n[YOU]> '))
                SOCKET.send(MSG.encode())
                print('\nAwaiting reply...')
            SOCKET.close()
    except Exception: pass

我需要做什么才能在 WAN 上工作?

【问题讨论】:

  • 您是否在双方上进行了转发?
  • 这很有意义。我不能要求某人进行端口转发,没有端口转发有很多聊天方式。那些在线聊天呢?

标签: python-3.x client server wan python-sockets


【解决方案1】:

确保端口转发WORKS,运行您的程序并尝试在您的公共 IP 上运行端口扫描。
Port scanning tool

  • 尝试将HOST更改为0.0.0.0
  • 如果这不起作用,请转到 CMD 并在脚本运行时写入 netstat -a
    搜索您正在侦听的端口并确保 IP 为0.0.0.0
  • 如果 IP 是 0.0.0.0,请尝试关闭您的防火墙。

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2012-06-15
    • 2020-03-21
    • 1970-01-01
    相关资源
    最近更新 更多