udp客户端收发数据流程

1、创建客户端socket开始进行通讯。 2、这时服务端应该先启动,并在知道服务端的ip以及端口号的时候才能进行通讯。 3、本地不需要绑定ip以及端口号,在用此套接字对象发送消息的时候会自动分配活动端口(1024-65535) 每次重启程序可能每次都不一样。 4、然后对将要发送的信息进行编码处理,然后将编码后的字节码发送到指定服务端ip以及端口。 5、这里还可以进行消息的接收,在这里接收消息首先得要发送数据到指定的服务端,告诉服务端客户端的ip以及所使用的端口是什么。 6、如果先进行消息阻塞是收不到消息的,这里客户端不需要绑定端口可以理解成在客户端把数据发送到服务端以后系统在后台默默地 把客户端ip以及端口和客户端绑定了起来。这样服务端发送的消息就能被客户端所接收。 7、接受到消息同样要进行解码,解码形式与服务端发送过来数据的编码格式相对应,把字节码转换成能看懂的数据进行打印。 8、最后进行客户端udp套接字关闭。

from socket import *
# 客户端

# 定义客户端udp套接字
socket_udp = socket(AF_INET, SOCK_DGRAM)
# 确定目标ip以及端口,这里是服务端在局域网内的ip地址以及服务端绑定的端口号
dest_addr = (' 这里填写服务端ipv4地址   ', 8989)

while True:
    # 输入发送数据
    temp_data = input('客户端:')
    # 加上具体对象形成对话形式
    temp_data = '客户端:' + temp_data
    # 对将要发送的数据进行编码,目标地址使用的什么编码去解码接收,则在这里使用什么编码去进行编码
    socket_data = temp_data.encode('gbk')
    # 调用套接字里udp发送数据的函数sendto()
    socket_udp.sendto(socket_data, dest_addr)
    # 准备接收数据,接收长度为1024
    temp_recv_data = socket_udp.recvfrom(1024)
    # 对接收到的数据进行解码
    socket_udp_recv_data = temp_recv_data[0].decode('gbk')
    # # 对接收到的消息进行打印
    # print(socket_udp_recv_data, '\n对方发送数据所使用的端口号是:', temp_recv_data[1][1])
    # 对接收到的消息进行打印
    print(socket_udp_recv_data)
# 发送完毕,关闭udp套接字、
# socket_udp.close()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java Edge

Redis键过期策略

3598
来自专栏xingoo, 一个梦想做发明家的程序员

[Logstash-input-redis] 使用详解

redis插件的完整配置 input { redis { batch_count => 1 #返回的事件数量,此属性仅在list模式下起...

26810
来自专栏IMWeb前端团队

浏览器进程?线程?傻傻分不清楚!

本文作者:IMWeb coverguo 原文出处:IMWeb社区 未经同意,禁止转载 在生活中,浏览器和我们的工作和生活息息相关。做为前端开发,我们...

2189
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》第4章 零XML配置的Spring Boot Application小结

Spring Boot 提供了一种统一的方式来管理应用的配置,允许开发人员使用属性properties文件、YAML 文件、环境变量和命令行参数来定义优先级不同...

582
来自专栏电光石火

微信开发如何保证access_token/jsapi_ticket长期有效

为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台开放了许多接口,包括自定义菜单接口、客服接口、获取用户信息接口、用户分组接口、群发接口...

2998
来自专栏前端学习心得

JavaScript线程机制与事件机制

进程是指程序的一次执行,它占有一片独有的内存空间,可以通过windows任务管理器查看进程(如下图)。同一个时间里,同一个计算机系统中允许两个或两个以上的进程处...

492
来自专栏数值分析与有限元编程

Debug模式 和 Release模式

很多编译器允许两种编译链接方式:Debug模式 和 Release模式。这两种链接方式的区别主要是: Debug 模式:程序几乎不进行优化。产生的可执行程序具有...

2736
来自专栏阿杜的世界

Java Web技术经验总结(十六)

836
来自专栏分布式系统进阶

KafkaController分析5-Partition状态机

851
来自专栏上善若水

L009Linux和androidNDK之linux网络通讯超时时间设置

无论你用任何语言或者是网络库,你都可以设置网络操作的超时时间,特别是connect,read,write的超时时间。

1245

扫码关注云+社区