网络编程之UDP套接字编程

UDP套接字服务端

  • 创建UDP数据报套接字
import socket

# 功能:
#      创建一个套接字
# 参数:
#      socket_family : 选择地址族类型  AF_INET(IPv4) / AF_INET6(IPv6)
#      socket_type :  套接字类型 SOCK_STREAM(流式) /SOCK_DGRAM(数据报)
#      proto : 选择子协议类型  通常为0
# 返回值: 
#       返回套接字对象
sockfd = socket.socket(AF_INET,SOCK_DGRAM)
  • 绑定服务端地址(本机的IP和端口号)
# 功能:绑定IP地址
# 参数:一个包含两个元素的元组,元组第一个元素是主机名,第二个是使用的端口号
sockfd.bind(addr)
  • 消息的收发
# 功能:接收UDP消息
# 参数:每次最多接收多大的消息
# 返回值:
#      data  接收到的数据
#      addr  消息发送端的地址
# 一次接收一个数据报,如果数据报大小大于buffersize则会丢失部分消息
data,addr = sockfd.recvfrom(buffersize)

# 功能:发送udp消息
# 参数:
#      data  发送的消息  bytes格式
#      addr  目标地址
# 返回值:发送的字节数
sockfd.sendto(data,addr)
  • 关闭套接字
sockfd.close()

UDP套接字客户端

  • 创建套接字
import socket
sockfd = socket.socket(AF_INET,SOCK_DGRAM)
  • 消息收发
sockfd.sendto(data,addr)
data,addr = sockfd.recvfrom(buffersize)
  • 关闭套接字
sockfd.close()

补充函数

# 功能:发送tcp消息
# 参数:要发送的内容,bytes格式
# 返回值:成功返回 None 失败产生异常
sendall(data)

UDP应用之广播

  • 广播:一点发送,多点接收
  • 广播地址:一个网段内有一个指定的广播地址,是该网段的最大地址
  • 广播风暴:一个网络中有大量的广播就会产生广播风暴占用大量带宽,影响正常的访问速度

TCP套接字编程和UDP套接字编程区别

  • 流式套接字使用字节流的方式传输,数据报套接字以数据报形式传输数据
  • tcp会有粘包现象,udp有消息边界不会形成粘包
  • tcp 可以保障数据传输完整性,udp则不保证
  • tcp 需要进行listen,accept操作,udp不需要
  • tcp收发消息使用新的套接字,recv,send,而udp使用recvfrom,sendto

sys.argv 属性

  • 功能:获取命令行参数,得到一个列表
  • 命令本身是 argv[0]
  • 后面的参数从argv[1]开始,默认以空格分隔
  • 使用引号引起来的内容算作一个整体
  • 命令行参数都以字符串放入列表
#  test.py
import sys
print(sys.argv)

# python3 test.py
# ['test.py']

# python3 test.py hello
# ['test.py','hello']

# python3 test.py hello world
# ['test.py','hello','world']

# python3 test.py 'hello world'
# ['test.py','hello world']
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    Lucus_Linx阅读 14,819评论 6 31
  • 网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运...
    go以恒阅读 6,426评论 0 6
  • 1. 网络概述 1.1 概述 1.1.1什么是网络? 早期的计算机都是互相独立的一套一台以数据运算为主的机器。...
    _宁采臣阅读 4,021评论 0 1
  • 一、什么是TCP/IP 网络和协议 1. TCP/IP是一类协议系统,它是一套支持网络通信的协议集合。网络是计算机...
    karlon的马甲阅读 11,646评论 1 24
  • 送儿子上学,路上,儿子郑重地说:“妈妈,我觉得你对我不公平,你爱姐姐不爱我。” “是吗?儿子,可不可以说个一、二、...
    立邦柒阅读 4,763评论 20 30