在Docker容器中运行的Python UDP服务器

物联网用户

在继续开发之前,我想在Docker中测试一个简单的UDP服务器。我以前从未与Docker合作过,所以我认为这应该是初学者的错误

我目前有什么?

服务器

import threading
import socketserver



class ThreadedUDPRequestHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = self.request[0].strip()
        current_thread = threading.current_thread()
        print("Thread: {} client: {}, wrote: {}".format(current_thread.name, self.client_address, data))
        Split = threading.Thread(target=ParseIncomingData,args=(data,))
        Split.start()



class ThreadedUDPServer(socketserver.ThreadingMixIn, socketserver.UDPServer):
    pass

def publish_messages(data):
    """Publishes multiple messages to a Pub/Sub topic."""
    print('Published {} .'.format(data))

def ParseIncomingData(message):
    sender = threading.Thread(target=publish_messages, args=(message,))
    sender.start()


if __name__ == "__main__":
    HOST, PORT = "0.0.0.0", 6071
    try:
        serverUDP = ThreadedUDPServer((HOST, PORT), ThreadedUDPRequestHandler)
        server_thread_UDP = threading.Thread(target=serverUDP.serve_forever)
        server_thread_UDP.daemon = True
        server_thread_UDP.start()
        serverUDP.serve_forever()
    except (KeyboardInterrupt, SystemExit):
        serverUDP.shutdown()
        serverUDP.server_close()
        exit()

docker文件

# Use an official Python runtime as a base image
FROM python:3.7.2-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Make port 6071 available outside this container
EXPOSE 6071/udp

# Run app.py when the container launches
CMD ["python", "app.py"]

我如何执行容器?

docker run --rm -p 6071:6071/udp listener

我已经尝试过几种有关端口使用情况的组合,但是运行它时却看不到任何东西(Windows)

额外:

要测试服务器,我正在使用大力神发送USP数据:

大力神

物联网用户

它适用于以下配置:

在dockerfile中使用未缓冲的输出

CMD ["python","-u","main.py"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS中的UDP / TCP服务器

如何连接到在Docker容器中运行的服务器?

Symfony服务器:在php Docker容器中运行

连接到在 windows docker 容器中运行的服务器

在 docker 容器中运行 django 开发服务器

在 Docker 容器中从 Jenkins 管道运行 Django 服务器

调整TCP / UDP服务器运行时

为在Docker中运行的Graylog2服务器自动创建UDP输入?

使用python 3.6异步的UDP代理服务器

避免多线程UDP服务器中的数据丢失

UDP套接字未从Go中的服务器读取

UDP中的服务器-客户端

无法连接到在Docker容器中运行的服务器(适用于Mac的Docker)

如何从浏览器访问在Docker容器中运行的Web服务器?

在Docker中运行RabbitMQ服务器

无法连接到运行 MySQL 服务器的 Docker 容器

在Docker容器上运行的访问服务器

在android上的局域网中运行的UDP服务器

VSCode:如何通过远程服务器在Docker容器中运行Jupyter Notebook?

如何从主机连接到在Docker容器中运行的mysql服务器?

无法连接到在本地Docker容器中运行的Go GRPC服务器

Rails服务器仍在新打开的Docker容器中运行

Mac:如何从其他计算机远程访问在Docker容器中运行的服务器?

如何访问在Docker容器中运行的Nginx Web服务器提供的网页

Python中的UDP客户端/服务器套接字

python中的UDP广播和自动服务器发现,TCP套接字不可用

使用Python在UDP客户端服务器中打印消息时的编码问题

无法从主机访问容器中运行的服务器

在Docker容器中运行eureka服务