UDP语法

1 创建一个socket的UDP对象

import socket

#创建对象  socket.SOCK_DGRAM 代表UDP协议
sk = socket.socket(type=socket.SOCK_DGRAM)
print (sk)

执行

[root@node10 tcp]# python3 server.py
<socket.socket fd=3,
family=AddressFamily.AF_INET,
type=SocketKind.SOCK_DGRAM,
proto=0,
laddr=('0.0.0.0', 0)>

2 创建UAP连接

服务端

import socket

#创建对象  socket.SOCK_DGRAM 代表UDP协议
sk = socket.socket(type=socket.SOCK_DGRAM) #在网络中注册该主机
sk.bind ( ("127.0.0.1",9000) ) #udp服务器,第一次启动时,一定是先接收数据,在发送数据
msg,cli_addr = sk.recvfrom(1024)
print (msg.decode("utf-8")) #关闭udp连接
sk.close()

客户端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM) #sendto (要发送的消息,(IP地址,端口号))
sendto ("Nice to meet you!".encode("utf-8"),("127.0.0.1",9000) )
#关闭连接
sk.close()

先执行服务端

[root@node10 tcp]# python3 server.py

被阻塞,查看端口信息

再执行客户端

服务端收到消息

[root@node10 tcp]# python3 server.py
Nice to meet you!

3 循环发消息

服务端

#服务端
import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议
sk = socket.socket(type=socket.SOCK_DGRAM) #在网络中注册该主机
sk.bind ( ("127.0.0.1",9000) ) #udp服务器,第一次启动时,一定是先接收数据,在发送数据
while True:
msg,cli_addr = sk.recvfrom(1024)
print (msg.decode("utf-8"))
print (cli_addr) #关闭udp连接
sk.close()

客户端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM) #sendto (要发送的消息,(IP地址,端口号))
while True:
message = input("Please input the value:")
sk.sendto (message.encode("utf-8"),("127.0.0.1",9000) )
#关闭连接
sk.close()

执行

[root@node10 tcp]# python3 server.py
Hello #服务端接收的消息
('127.0.0.1', 34236) #打印出客户端的地址端口
Nice to meet you!
('127.0.0.1', 34236)
[root@node10 tcp]# python3 client.py #客户端发送消息
Please input the value:Hello
Please input the value:Nice to meet you!

4 服务端同时发送消息给客户端

服务端

#服务端
import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议
sk = socket.socket(type=socket.SOCK_DGRAM) #在网络中注册该主机
sk.bind ( ("127.0.0.1",9000) ) #udp服务器,第一次启动时,一定是先接收数据,在发送数据
while True:
msg,cli_addr = sk.recvfrom(1024)
print (msg.decode("utf-8"))
print (cli_addr)
#发送消息
message = input("Please input your vaule>>>:")
sk.sendto(message.encode("utf-8"),cli_addr)
#关闭udp连接
sk.close()

客户端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM) #sendto (要发送的消息,(IP地址,端口号))
while True:
message = input("Please input the value:")
sk.sendto (message.encode("utf-8"),("127.0.0.1",9000) )
#接收数据
msg,ser_addr = sk.recvfrom(1024)
print (msg.decode("utf-8"))
#关闭连接
sk.close()

执行

[root@node10 tcp]# python3 server.py
Hi #服务端接收数据
('127.0.0.1', 41800)
Please input your vaule>>>:Hi #服务端发送的数据
Nice to meet you!
('127.0.0.1', 41800)
Please input your vaule>>>:Nice to meet you too!
[root@node10 tcp]# python3 client.py
Please input the value:Hi #客户端发送数据
Hi #客户端接收到的数据
Please input the value:Nice to meet you!
Nice to meet you too!
Please input the value:

037.Python的UDP语法的更多相关文章

  1. python yield from 语法

    python yield from 语法 yield语法比较简单, 教程也很多 , yield from的中文讲解很少 , python官网是这样解释的 PEP 380 adds the yield ...

  2. Python基础:语法基础(3)

    本篇主要介绍Python中一些基础语法,其中包括:标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 1. 标识符和关键字 1.1 标识符 标识符是变量.常量.函数.属性.类.模块和包等 ...

  3. Python的基础语法(二)

    0. 前言 接着上一篇博客的内容,我将继续介绍Python相关的语法.部分篇章可能不只是简单的语法,但是对初学者很有帮助,也建议读懂. 1. 表达式 由数字.符号.括号.变量等组成的组合. 算术表达式 ...

  4. 六. Python基础(6)--语法

    六. Python基础(6)--语法 1 ● Python3中, Unicode转字节的方法 print(bytes("李泉", encoding = 'utf-8')) prin ...

  5. 五. Python基础(5)--语法

    五. Python基础(5)--语法 1 ● break结束的是它所在的循环体, continue是让它所在的循环体继续循环 # 打印: 1 10 2 10 3 10 4 10 5 10 6 10 7 ...

  6. 四. Python基础(4)--语法

    四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次     sum += i     i ...

  7. 三. Python基础(3)--语法

    三. Python基础(3)--语法 1. 字符串格式化的知识补充 tpl = "我是%s,年龄%d,学习进度100%" %('Arroz',18) print(tpl) # 会提 ...

  8. 二. Python基础(2)--语法

    二. Python基础(2)--语法 1.实现一个简单的登录系统 '''# 形式1 n = 1 while n < 4:     name = input("请输入姓名\n" ...

  9. 一. Python基础(1)--语法

    一. Python基础(1)--语法 1. 应用程序 1.1 什么是计算机(Computer)? 组成 ①运算器 arithmetic unit; ※ Arithmetic unit and cont ...

随机推荐

  1. 【C/C++】memset方法的误区

    目录 一.前言 二.函数作用 三.效率对比 四.误区总结 1.按字节设置 2.设置的值只有最低字节有效 3.堆内存不可直接 sizeof 取首地址 4.传参数组不可直接 sizeof 取首地址 一.前 ...

  2. 在Visual Studio 中使用git——什么是Git(一)

    写程序必然需要版本控制,哪怕是个人项目也是必须的,微软从Visual Studio 2019开始默认提供了对Git的支持,Visual Studio 2019之前的版本可以安装相应的插件来实现Git功 ...

  3. JMeter发送get请求并分析返回结果

    在实际工作的过程中,我们通常需要模拟接口,来进行接口测试,我们可以通过JMeter.postman等多种工具来进行接口测试,但是工具的如何使用对于我们来说并不是最重要的部分,最重要的是设计接口测试用例 ...

  4. 《MySQL必知必会》学习笔记整理

    简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...

  5. Day17_106_IO_利用Buffered和BufferWriter完成复制

    利用Buffered和BufferWriter完成复制 代码示例: 用BufferedReader 和 BufferWriter完成复制 import java.io.*; public class ...

  6. 【pytest官方文档】解读fixtures - 10. fixture有效性、跨文件共享fixtures

    一.fixture有效性 fixture有效性,说白了就是fixture函数只有在它定义的使用范围内,才可以被请求到.比如,在类里面定义了一个fixture, 那么就只能是这个类中的测试函数才可以请求 ...

  7. 记一次“愉快”的lnmp环境的搭建

    愉快的lnmp环境搭建 后续更新 几个笔记记录 yum remove php-mysql yum -y install cmake autoconf wget gcc-c++ gcc zlib pcr ...

  8. WordPress 函数do_action()详解和应用举例

      do_action()函数: 我们经常能看到在一些WordPress函数中调用了do_action()函数,例如get_header(), get_footer()等调用模板的函数中经常调用do_ ...

  9. 【ElasticSearch】ES 读数据,写数据与搜索数据的过程

    ES读数据的过程: 1.ES客户端选择一个node发送请求,该请求作为协调节点(coordinating node): 2.corrdinating node 对 doc id 对哈希,找出该文档对应 ...

  10. dex文件格式学习

    一.dex文件的生成 我们可以通过java文件来生成一个简单的dex文件 编译过程: 首先编写java代码如下: (1) 编译成 java class 文件 执行命令 : javac Hello.ja ...