Python中的udp网络传输基础代码

与tcp相对应的另一种网络传输:
客户端代码:

"""
udp_client.py udp客户端流程
"""
from socket import *

# 服务端地址
ADDR = ('127.0.0.1',8888)

# 创建udp套接字
sockfd = socket(AF_INET,SOCK_DGRAM)

# 循环发送消息
while True:
    data = input("Msg>>")
    if not data:                        # 遇到输入为空就结束循环
        break
    # 向服务器发送
    sockfd.sendto(data.encode(),ADDR)   # 没有connect,而是在sendto时,使用ADDR
    msg,addr = sockfd.recvfrom(1024)    # 接收消息,记得写上消息缓冲区大小
    print("From Server:",msg.decode())  # 打印时记得转换成字符串
sockfd.close()                          # 关闭套接字

服务端代码:

"""
udp_server.py  udp服务端流程
重点代码
"""

from socket import *

# 创建udp套接字
sockfd = socket(AF_INET,SOCK_DGRAM)

# 绑定地址
server_addr = ('0.0.0.0',8888)
sockfd.bind(server_addr)

# 收发消息
while True:
    data,addr = sockfd.recvfrom(1024)               # 直接接收到的就是data
    # if not data:
    #     break                                     # (接收为空时,退出)但是不合适,因为udp不止一个客户端
    print("From %s Msg:%s"%(addr,data.decode()))
    sockfd.sendto(b'Thanks',addr)                   # 发送时要添加目标地址

# 关闭套接字
sockfd.close()

总结 :tcp套接字和udp套接字编程区别

  1. 流式套接字是以字节流方式传输数据,数据报套接字以数据报形式传输
  2. tcp套接字会有粘包,udp套接字有消息边界不会粘包
  3. tcp套接字保证消息的完整性,udp套接字则不能
  4. tcp套接字依赖listen accept建立连接才能收发消息,udp套接字则不需要
  5. tcp套接字使用send,recv收发消息,udp套接字使用sendto,recvfrom

socket套接字属性
【1】 sockfd.type 套接字类型
【2】 sockfd.family 套接字地址类型
【3】 sockfd.getsockname() 获取套接字绑定地址
【4】 sockfd.fileno() 获取套接字的文件描述符
【5】 sockfd.getpeername() 获取连接套接字客户端地址
【6】 sockfd.setsockopt(level,option,value)
功能:设置套接字选项
参数: level 选项类别 SOL_SOCKET
option 具体选项内容
value 选项值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值