Skr-Eric的网络编程课堂(三)-- udp套接字编程

基于udp套接字的服务端

 

1. 创建数据报套接字

sockfd = socket(AF_INET,SOCK_DGRAM)

 

2. 绑定地址

sockfd.bind(addr)

 

3. 消息的收发

data,addr = sockfd.recvfrom(buffersize)

功能 : 接收UDP消息

参数 : 每次最多接收多大的消息

返回值:data   接收到的数据

        addr   消息发送端的地址

* 一次接收一个数据报,如果数据报大小大于buffersize则会丢失部分消息

sockfd.sendto(data,addr)

功能 : 发送udp消息

参数 : data  发送的消息  bytes格式

        addr  目标地址

返回值: 发送的字节数

 

4. 关闭套接字

sockfd.close()

 

udp客户端

 

1. 创建套接字

   socket(AF_INET,SOCK_DGRAM)

 

2. 消息收发

   recvfrom/sendto

 

3. 关闭套接字

   close()

 

cookie

1. sys.argv 属性

功能 : 获取命令行参数,得到一个列表

命令本身是 argv[0]

后面的参数从argv[1]开始,默认以空格分隔

使用引号引起来的内容算作一个整体

命令行参数都以字符串放入列表

 

2.

在程序的第一行加

#!/usr/bin/env python3

添加程序的执行权限

chmod  755  file.py

修改后即可通过 ./file.py  运行程序

 

tcp套接字编程和udp套接字编程区别

 

1. 流式套接字使用字节流的方式传输,数据报套接字以数据报形式传输数据

2. tcp会有粘包现象,udp有消息边界不会形成粘包

3. tcp 可以保障数据传输完整性,udp则不保证

4. tcp 需要进行listen accept 操作,udp不需要

5. tcp收发消息使用新的套接字,recv send。udp使用recvfrom,sendto

 

补充函数

sendall(data)

功能 : 发送tcp消息

参数 : 要发送的内容,bytes格式

返回值 : 成功返回 None 失败产生异常

 

套接字对象

 

s代表一个套接字

s.family  : 获取套接字地址族类型

s.type : 获取套接字类型

s.getsockname() : 获取套接字的绑定地址

s.fileno() : 获取套接字的文件描述符

文件描述符 : 每一个IO事件操作系统都会分配一个不同的正整数作为编号,改正整数即为这个IO的文件描述符。

* 文件描述符是操作系统识别IO的唯一标志

stdin ---> 0

stdout --> 1

stderr --> 2

 

s.getpeername() : 获取客户端连接套接字的对应地址

s.setsockopt(level,option,value)

功能:设置套接字选项,丰富或者修改套接字属性功能

参数: level 选项类别   SOL_SOCKET

       option 具体选项

       value  选项值

 

s.getsockopt(level,option)

功能:获取套接字选项值

参数: level 选项类别   SOL_SOCKET

       option 具体选项

返回值:选项值

* 如果要设置套接字选项,最好在创建套接字之后立即设置

 

 

udp 应用之广播

 

广播 : 一点发送,多点接收

广播地址 : 一个网段内有一个指定的广播地址,是该网段的最大地址。  192.168.207.255

广播风暴 : 一个网络中有大量的广播就会产生广播风暴占用大量带宽,影响正常的访问速度。

 

 

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值