• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
百里丶落云
Gee,gee,baby,baby
            管理     
总结day25 ---- udp 初识, 和tcp 进阶

前情提要

    一: tcp 和udp 的区别

      

#  tcp
#     # 面向连接的 可靠的 全双工的 流式传输
#     # 面向连接 :同一时刻只能和一个客户端通信
#     #            三次握手、四次挥手
#     # 可靠的 :数据不丢失、慢
#     # 全双工 :能够双向通信
#     # 流式传输 :粘包 无边界
# udp
    # 无连接的 面向数据包 不可靠的 快速的
    # 无连接的 :不需要accept/connect 也没有握手
    # 面向数据包的 :不会粘包
    # 不可靠的 :没有自动回复的机制
    # 快速的 :没有那些复杂的计算、保证数据传输的机制

 

 

    二:udp 的简单示例

      1:服务端

 

import socket
sk=socket.socket(type=socket.SOCK_DGRAM) #默认是tcp 协议,需要更改type 类型,
sk.bind(('127.0.0.1',9000))     #建立服务
msg ,addr =sk.recvfrom(1024)   #每次大小
print(msg)
print(addr)
sk.sendto(b'world',addr)     #内容,地址
sk.close()

 

  

 

      2:客户端

 

import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
sk.sendto(b'hello',('127.0.01',9000))
msg,addr =sk.recvfrom(1024)
print(msg)
sk.close()

 

 

 

    三:udp实现多人聊天

      1:服务端

import socket
sk =socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',9000)) #建立服务
while 1:
    msg ,addr =sk.recvfrom(1024)
    print(msg)
    connect =input('>>>>').encode()
    sk.sendto(connect,addr)

 

 

 

      2:服务端

 

import socket
sk =socket.socket(type=socket.SOCK_DGRAM)
while 1:
    connect =input('>>>>>').encode()
    sk.sendto(connect,('127.0.0.1',9000))
    msg ,addr =sk.recvfrom(1024)
    print(msg)

 

 

 

 

    四:tcp 实现多并发解决聊天问题(并不是群发只是逐个解决)

      1:服务端

 

import socketserver #soceket的进阶类
class Myserver(socketserver.BaseRequestHandler): #固定格式
    def handle(self):
        conn =self.request
        while 1:
            conttent =input('>>>>>>>>>>>').encode()
            conn.send(conttent)

server =socketserver.ThreadingTCPServer(('127.0.0.1',9000),Myserver)
server.serve_forever()

 

 

 

       2客户端:

 

import socket
sk =socket.socket()
sk.connect(('127.0.0.1',9000))
while 1:
    ret =sk.recv(1024)
    print(ret)
sk.close()

 

 

 

 小作业:

# 1.完成一个在网络上对文件的传输(进阶需求 如果这个文件非常大 2个G)
# 1)完成文件的下载
# 2)把用户认证这个功能加上
# 必须先认证 再进行上传下载
# 3)文件的一致性校验
# 2.练习一些udp协议的操作
# 3.使用socketserver实现一个并发的基于tcp协议的多人聊天

 

 

 

 

 

 

上面作业等讲完整理

 

年与时驰,意与日去,遂成枯落, 多不接世,悲守穷庐,将复何及。
posted on 2019-01-23 20:48  百里丶落云  阅读(218)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3