利用Docker技术实现UDP广播效果(网络编程python版)

docker的安装见官方文档 我使用的系统为Ubuntu16.04

Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/linux/ubuntulinux/

Ubuntu的版本必须和文档中提到的要一致

-----------------------------------------------------------------

1.查找相关的Ubuntu镜像

可以去docker镜像官网:https://hub.docker.com 点击第一个查看

也可以使用docker命令查看镜像: sudo docker search ubuntu

 

2.用docker命令下拉自己想要的镜像 sudo docker pull ubuntu:16.04

因为我这里已经下载好了,所以直接显示了状态信息。如果没有该images(镜像)的话,会从镜像官网下载,请耐心等待。

 

下载成功后可以用命令 sudo docker images 查看自己下载的镜像

这里有我下载的其他镜像, 我们下载的镜像REPOSITORY是ubuntu, TAG为16.04

 

3.利用下载的ubuntu镜像安装容器: sudo docker run -it --name h1 ubuntu:16.04

 这里的--name指明了自己所要创建的容器的名字,ubuntu16.04为我们的镜像

 

 因为我在这里要创建两个容器,第二个容器h2和h1步骤完全一样,这里不做阐述。

 sudo docker run -it --name h2 ubuntu:16.04

 

 创建成功后会自动进入容器里面,使用命令exit可以退出当前容器。

 退出后可以使用 sudo docker start h1

         sudo docker attach h1(输完命令完后点一两下回车)

 输完这两个命令后就可以再次进入容器。

 

 进入容器后首先更新系统的源: apt-get update

   更新完成后,安装vim方面后面编写代码: apt install vim -y 

   该ubuntu是没有ifconfig和ping命令的,如果需要的可以选择安装(见我上一篇博客)

 

4.好了,到这里所有的准备已经完成了。现在开始使用python编写UDP Broadcast了并查看相应的结果。

 udp_broadcast.py 

 1 #!/usr/bin/env python3
 2 # UDP client and server for broadcast messages on a local LAN
 3 
 4 import argparse, socket
 5 
 6 BUFSIZE = 65535
 7 
 8 def server(interface, port):
 9         sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10 #       sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
11         sock.bind((interface, port))
12         print('Listening for datagrams at {}'.format(sock.getsockname()))
13         while True:
14                 data, address = sock.recvfrom(BUFSIZE)
15                 text = data.decode('ascii')
16                 print('The client at {} says {}'.format(address, text))
17 
18 def client(network, port):
19         sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
20         sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
21         text = 'Broadcast datagram!'
22         sock.sendto(text.encode('ascii'), (network, port))
23 
24 if __name__=='__main__':
25         choices = {'client':client, 'server':server}
26         parser = argparse.ArgumentParser(description='Send and receive UDP broadcast.')
27         parser.add_argument('role', choices=choices, help='which role to play.')
28         parser.add_argument('host', help='interface the server listen at network the client sends to')
29         parser.add_argument('-p', metavar='POST', type=int, default=1060, help='UDP port(default 1060)')
30         args = parser.parse_args()
31         function = choices[args.role]
32         function(args.host, args.p)
33 

 

因为对docker技术也是刚刚入门,所以只会简单的用法。在使用scp命令实现文件传输会提示失败,

所以我干脆使用了一个笨办法,在本机(docker:172.17.0.1)和h1(172.17.0.2)和h2(172.17.0.3)中

都写了一遍udp_broadcast.py .

 

查看效果

  本机输入: sudo python udp_broadcast.py server  ""

  h2输入  :   sudo python udp_broadcast.py server  ""

  h1输入  : sudo python udp_broadcast.py client    "<broadcast>"

 

 

ok效果和预想的一样, h1作为客户端发送udp 广播, 本机和h2作为服务器都有收到h1发送的udp广播信息。

转载于:https://www.cnblogs.com/xautxuqiang/p/6247938.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于DockerPython在线编程平台是一个面向开发者的云服务平台,用户可以通过网页端实时在线编写、调试和运行Python代码。以下是它的设计与实现。 首先,该平台基于Docker容器技术实现多租户的隔离和资源管理。每个用户的编程环境将在独立的Docker容器中运行,确保用户之间的代码和数据完全隔离,避免安全和资源竞争问题。 其次,平台提供一个用户友好的网页编辑界面,用户可以直接在浏览器中编写Python代码,无需在本地安装开发环境。编辑器界面支持基本的代码高亮、自动补全和语法检查,同时集成了代码本控制和共享功能,方便用户在团队协作中进行代码管理和共享。 接着,平台部署了一组自动化测试工具,用于检查用户提交的代码的正确性和性能。这些测试工具会在用户提交代码后自动运行,输出测试结果和代码覆盖率报告。这能帮助用户快速发现代码中的问题,并提供改进建议。 平台还实现了支持用户交互的执行环境。用户可以在网页上直接运行自己编写的Python代码,并实时查看输出结果。此外,平台还支持用户在代码中使用标准输入和标准输出进行数据交互,以及快速调试代码的功能。 最后,平台还提供了用户管理、权限控制和系统监控等管理功能。管理员可以添加、删除和管理用户账号,并设置不同用户的权限。系统监控模块可以实时监控各个容器的资源使用情况,及时调整系统资源分配,以保证平台的稳定性和性能。 总而言之,基于Docker技术Python在线编程平台通过容器隔离、友好的编辑界面、自动化测试、可交互的执行环境和完善的管理功能,提供了一个便于开发者进行Python编程的在线环境。这将帮助开发者更高效地学习、开发和共享Python代码,并促进团队协作和知识分享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值