python UDP 外网访问不响应

img


我使用了外网映射,想从外网访问我电脑的8080端口,发包之后一直不响应。我想知道是从哪被拦住了。

#server.py

from socket import *
from time import ctime

HOST = 'localhost'
PORT = 8080
BUFSIZ = 1024
ADDR = (HOST, PORT)

udpSerSock = socket(AF_INET, SOCK_DGRAM)
udpSerSock.bind(ADDR)

while True:
    print('waiting for message...')
    data, addr = udpSerSock.recvfrom(BUFSIZ)
    content = '[%s] %s' % (bytes(ctime(), "utf-8"), data)
    udpSerSock.sendto(content.encode("utf-8"), addr)
    print('...received from and returned to:', addr,data)

udpSerSock.close()

#locate.py

from socket import *

HOST = '682acbc6.r8.cpolar.top'
PORT = 8080
BUFSIZ = 1024
ADDR = (HOST, PORT)

udpCliSock = socket(AF_INET, SOCK_DGRAM)

while True:
    data = input('> ')
    if not data:
        break

    udpCliSock.sendto(data.encode("utf-8"), ADDR)
    data, ADDR = udpCliSock.recvfrom(BUFSIZ)
    if not data:
        break
    print(data)

udpCliSock.close()

img

望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
你先要确保:
1.本地电脑的防火墙规测放行了8080端口的流量。
2.如果你使用的是路由器,需要确保路由器的端口映射规则正确配置,将外网的流量转发到
本地电脑的8080端口。
3.如果你在本地运行的UDP服务器已经启动,则需要确保服务器能够正常接收外网的UDP数
据包。
如果你仍然无法从外网访问本地的8080端口,建议你尝试在本地电脑上抓包,查看乱UDP数据
包是否被拦截。还可以尝试使用telnet工具测试一下本地电脑是否能够接收到外网的UDP数
据包。