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 条评论
登录 后参与评论

相关文章

来自专栏别先生

eclipse工具下hadoop环境搭建

eclipse工具下hadoop环境搭建:     window10操作系统中搭建eclipse64开发系统,配置hadoop的eclipse插件,让eclip...

3255
来自专栏散尽浮华

Linux下路由配置梳理

在日常运维作业中,经常会碰到路由表的操作。下面就linux运维中的路由操作做一梳理: -------------------------------------...

65011
来自专栏Golang语言社区

Linux下TCP最大连接数受限问题

一、 文件数限制修改 1、用户级别 查看Linux系统用户最大打开文件限制: # ulimit -n 1024 (1) vi /etc/security/li...

9226
来自专栏Golang语言社区

LINUX环境并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。 1 循环服务器与并发服务器模型 在网络程序里面,一...

2944
来自专栏L宝宝聊IT

Linux基础——Firewalld防火墙(二)

2263
来自专栏电光石火

mysql用户管理

服务器上mysql的用户有两种: 1.  本地用户   从本机连接mysql,例如: mysql部署在A服务器上,从A上连接mysql的用户 2.  远...

2065
来自专栏互联网杂技

idea下java web的hello world

学习java Web的同学,跟这个走; 前三张图片,不解释, ? ? ? 创建之后,打开这个文件,写两个Hello world ? 配置 ? 选择配置tomca...

3638
来自专栏州的先生

快速解决pip下载速度慢的老问题

1942
来自专栏后端技术探索

nginx日志

通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日...

1373
来自专栏Java3y

Linux进程管理

每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。

2510

扫码关注云+社区