Python socket模块实现的udp通信功能示例


Posted in Python onApril 10, 2019

本文实例讲述了Python socket模块实现的udp通信功能。分享给大家供大家参考,具体如下:

socket介绍

socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:

它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页、QQ 聊天、收发 email 等等。

模拟udp_socket客户端(发送端):udp_client.py

#coding=utf-8
import socket
# 获取本机的ip地址
def get_addr():
  # 获取本机计算机名称
  hostname = socket.gethostname()
  # 获取本机ip并返回
  return socket.gethostbyname(hostname)
# 创建udp套接字,
# AF_INET表示ip地址的类型是ipv4,
# SOCK_DGRAM表示传输的协议类型是udp
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 要发送的信息
test_data = raw_input('请输入要发送的消息:')
print 'send_data = ', test_data
# 要发送的ip地址和端口(元组的形式)
host = get_addr()
test_addr = (host, 8080)
print 'send_addr = ', test_addr
print 'prepare to send ------'
# 发送消息
udp_socket.sendto(test_data, test_addr)
# 关闭套接字
udp_socket.close()
print 'send end ------'

模拟udp_socket套接字服务端(接收端):udp_server.py

# coding=utf-8
import socket
# 获取本机的ip地址
def get_addr():
  # 获取本机计算机名称
  hostname = socket.gethostname()
  # 获取本机ip并返回
  return socket.gethostbyname(hostname)
# 创建udp套接字,
# AF_INET表示ip地址的类型是ipv4,
# SOCK_DGRAM表示传输的协议类型是udp
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定本地信息,若不绑定,系统会自动分配
host = get_addr()
bind_addr = (host, 8080)
print 'bind_addr = ', bind_addr
udp_socket.bind(bind_addr) # ip和port,ip一般不用写,表示本机的任何一个ip
# 等待接收数据
revc_data = udp_socket.recvfrom(1024) # 1024表示本次接收的最大字节数
# 打印接收到的数据
print 'revc_data = ', revc_data
print 'data = ', revc_data[0]
print 'ip_port = ', revc_data[1]
# 关闭套接字
udp_socket.close()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
通过python下载FTP上的文件夹的实现代码
Feb 10 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
Python中的变量和作用域详解
Jul 13 Python
在centos7中分布式部署pyspider
May 03 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
Python 加密与解密小结
Dec 06 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
Python Celery多队列配置代码实例
Nov 22 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
如何基于Python实现自动扫雷
Jan 06 Python
Django模板获取field的verbose_name实例
May 19 Python
Django配置跨域并开发测试接口
Nov 04 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 #Python
一个可以套路别人的python小程序实例代码
Apr 09 #Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 #Python
详解Python 解压缩文件
Apr 09 #Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 #Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 #Python
由Python编写的MySQL管理工具代码实例
Apr 09 #Python
You might like
PHP防注入安全代码
2008/04/09 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
vue中的scope使用详解
2017/10/29 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
Python中文字符串截取问题
2015/06/15 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
python中解析json格式文件的方法示例
2017/05/03 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python 获取图片分辨率的方法
2019/01/08 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
python ---lambda匿名函数介绍
2019/03/13 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
python map比for循环快在哪
2020/09/21 Python
初中科学教学反思
2014/01/21 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python