文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么实现Udp接收数据

2023-06-02 03:56

关注

本篇内容主要讲解“怎么实现Udp接收数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么实现Udp接收数据”吧!

  udp接收数据,网络调试助手担任发送方,但发送时需要对方的也就是虚拟机的ip 和端口,ip可以通过config获取,那么如何让一个程序拥有一个固定端口呢?

  创建套接字的时候是没有端口号的,好比买了手机没有手机号,别人是找不到你的,所以要有一个固定的端口号,用udp_socket.bind()绑定一个端口

  接下来写程序,终端中:

  vim 05 绑定端口用来接收数据.py

  写程序的思路: if name==“main”:

  main()

  然后再def main():

  在这个函数里写代码。

  用注释来搭建流程

  #1、创建套接字

  #2、绑定一个本地信息

  #3、接收数据

  #4、打印接收到的数据

  #5、关闭套接字

  流程搭建完之后开始写代码,创建套接字的时候,用的是socket.XX,此时需要在代码的最上方导入socekt,用到什么导什么,代码不是从第一行开始写的。

  因为当代码比较多的时候,比如200多行,不确定会用到什么,所以用到什么导入什么,用到什么再调什么。

  1、udp绑定端口用来接收数据.py

  代码具体形式如下:

  import socket

  def main():

  #1、创建套接字

  udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  #2、绑定一个本地信息(udp ctrl n自动补全),必须绑定自己电脑的ip port其它电脑的不行

  绑定的是一个元组,用localaddr变量表示,本地ip,绑定端口,端口号大于1024

  localaddr =("",7788)

  udp_socket.bind(localaddr)

  #3、接收数据(发送数据是套接字.sendto 接收是套接字.recvfrom(1024),

  1024表示本次接收的最大字节数),并用recv_data变量接收

  recv_data = udp_socket.recvfrom(1024)

  #4、打印接收到的数据

  print(recv_data)

  #5、关闭套接字

  udp_socket.close()

  if __name__=="__main__":

  main()

  代码完成后,终端中python3 05 绑定端口用来接收数据.py 运行程序,此时由网络调试助手发送过来的消息就可以在终端中收到,收到的内容显示情况如下:

怎么实现Udp接收数据

  打印出来的数据即变量recv_data,是一个元组,第一个参数是发送的数据,第二个参数是一个小元组,是发送方的ip和端口。

  想要在终端中只显示接收到的数据,不显示对方的ip 和端口,操作如下:

  cp 05 绑定端口用来接收数据.py 06解析出接收到数据.py

  2、解析出接收到数据.py

  关于注释:

  如果在一行的开头注释,直接用# 后面跟上一个空格 再写注释内容

  如果是在代码后面注释 代码后面加两个空格 再用# 跟上一个空格 再写注释内容

  打印代码调整时的思路:

  print(“s% : s%”,%(send_addr,recv_msg))

  但send_addr是一个元组,不能直接这样用,需要用str(send_addr)来转换

  recv_msg也不能直接用,因为发送时是用编码编成了bite类型,收到的也是bite类型,如果直接发送过来的是字母,可以收到,但是如果发送过来是汉字,收到的是乱码,此时需要解码,

  recv_msg.decode(“utf-8”),但是此时用windows的网络调试助手发送中文过来还是乱码,因为windows不是用utf-8编码的,用的是gbk编码,所以此时解码需要用gbk,即:recv_msg.decode(“gbk”)

  如果将网络调试助手放到ubantu中,解码还是要用utf-8来解

  import socket

  def main():

  #1、创建套接字

  udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  #2、绑定一个本地信息

  localaddr =("",7788)

  udp_socket.bind(localaddr)

  #3、接收数据

  recv_data = udp_socket.recvfrom(1024)

  recv_msg = recv_data[0] # 用来接收发送的内容

  send_addr = recv_data[1] # 用来接收发送方的ip和port

  #4、打印接收到的数据

  #print(recv_data) # 此时打印的代码需要注释掉,重新调整

  pint("s%:s%",%(str(send_addr),recv_msg.decode("gbk")))

  #5、关闭套接字

  udp_socket.close()

  if __name__=="__main__":

  main()

  **总结:无锡妇科检查医院 http://www.87554006.com/

  发送数据步骤:

  1.创建套接字

  2.发送数据

  3.关闭套接字

  接收数据步骤:

  1.创建套接字

  2.绑定本地的ip 端口

  3.接收数据

  4.打印套接字

  想要在终端中循环一直接收数据,操作如下:

  cp 06解析出接收到数据.py 07循环接收数据.py

  vim 07循环接收数据.py

  3、循环接收数据.py

  想要循环接收,就要用while true ,对接收和打印代码进行while true:

  ESC 大V 上下箭头选中,大于号向右缩进

  import socket

  def main():

  #1、创建套接字

  udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  #2、绑定一个本地信息

  localaddr =("",7788)

  udp_socket.bind(localaddr)

  #3、接收数据

  while True:

  recv_data = udp_socket.recvfrom(1024)

  recv_msg = recv_data[0] # 用来接收发送的内容

  send_addr = recv_data[1] # 用来接收发送方的ip和port

  #4、打印接收到的数据

  pint("s%:s%",%(str(send_addr),recv_msg.decode("gbk")))

  #5、关闭套接字

  udp_socket.close()

  if __name__=="__main__":

  main()

到此,相信大家对“怎么实现Udp接收数据”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯