前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >udp服务端收发数据流程

udp服务端收发数据流程

作者头像
汪凡
发布2018-05-29 13:23:41
1K0
发布2018-05-29 13:23:41
举报
文章被收录于专栏:python成长之路

1、创建服务端的socket以便开始通讯。 2、绑定ip以及端口号,这样客户端才能找到这个程序。 3、因为本地网卡不止一个所以尽量不写死,一般用""空来表示所有本地网卡。 4、接下来开始通过绑定的ip以及端口开始监听消息,设置最大接收1024字节消息,以防文件过大,占满网络缓存区。 5、收到消息之后,这时候就收到了客户端发送过来的ip以及端口,然后也可以再通过这个ip以及端口回发消息。 6、收到消息的时候,先确定客户端的编码形式是utf-8还是gbk,并且用同样的方式把字节码解码成能看懂的数据。 7、在进行回发的时候,要首先对要发送的数据进行编码,转换成对应的字节码发送。 8、最后一步就是关闭服务端,一般不做关闭,关闭软件即关闭服务端。 9、在用线程,进程,进程池的时候可实现消息收发的并行,协程的时候可实现伪并行,原理就是方法之间切换。 10、协程可使用封装好的框架,greenlet以及gevent框架来操作。 11、在服务端循环进行消息阻塞(接收消息)的时候,这里跟tcp不同,不需要每次使用时重用或者是释放所绑定端口。 12、tcp在四次挥手以后还要等待客户端一分钟左右才会释放端口,udp属于突发通讯,来即收,挥即去。 13、所以在这里并不需要立马再次重用这个端口。

代码语言:javascript
复制
from socket import *
# 服务端

# 建立服务端socket
socket_serve = socket(AF_INET, SOCK_DGRAM)
# 确定本地端口,可能多个,所以不限
local_port = ('', 8989)
# 绑定本地端口
socket_serve.bind(local_port)

while True:
    # 本地端口监听客户端数据(接收数据)
    socket_temp_serve_data = socket_serve.recvfrom(1024)
    # 数据解码
    socket_serve_data = socket_temp_serve_data[0].decode('gbk')
    # 打印接受到的数据
    print(socket_serve_data)
    # 用户输入数据并对客户端发送
    socket_serve_sendto_temp_data = input('服务端:')
    #对用户输入的数据进行编码
    socket_serve_sendto_temp_data = '服务端:' + socket_serve_sendto_temp_data
    socket_serve_sendto_data = socket_serve_sendto_temp_data.encode('gbk')
    # 传输数据给客户端
    socket_serve.sendto(socket_serve_sendto_data, socket_temp_serve_data[1])
# 关闭socket服务端
# socket_serve.close()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档