Python网络编程之TCP与UDP协议套接字用法示例


Posted in Python onFebruary 02, 2018

本文实例讲述了Python网络编程之TCP与UDP协议套接字用法。分享给大家供大家参考,具体如下:

TCP协议

服务器端:

#!/usr/bin/env python
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM) ##创建服务器TCP套接字
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
  print 'waiting for connection...'
  tcpCliSock, addr = tcpSerSock.accept() ##等待客户端连接
  print '...connected from:', addr
  while True:
    data = tcpCliSock.recv(BUFSIZ) ##监听客户端是否发送消息
    if not data:
      break
    tcpCliSock.send('[%s] %s' % (
      ctime(), data))
  tcpCliSock.close()
tcpSerSock.close()

客户端:

#!/usr/bin/env python
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)  ##创建客户端TCP套接字
tcpCliSock.connect(ADDR) ##连接服务器
while True:
  data = raw_input('> ')
  if not data:
    break
  tcpCliSock.send(data)
  data = tcpCliSock.recv(BUFSIZ) ##监听客户端发送消息
  if not data:
    break
  print data
tcpCliSock.close()

UDP协议

服务器端:

#!/usr/bin/env python
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpSerSock = socket(AF_INET, SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
  print 'waiting for message...'
  data, addr = udpSerSock.recvfrom(BUFSIZ)##监听并接受客户端发的消息
  udpSerSock.sendto('[%s] %s' % (  ##给消息加上时间戳并返回给客户端
    ctime(), data), addr)
  print '...received from and returned to:', addr
udpSerSock.close()

客户端:

#!/usr/bin/env python
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True:
  data = raw_input('> ')
  if not data:
    break
  udpCliSock.sendto(data, ADDR) ##给服务器发送数据
  data, ADDR = udpCliSock.recvfrom(BUFSIZ) ##客户端接受带时间戳的数据
  if not data:
    break
  print data
udpCliSock.close()

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

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

Python 相关文章推荐
python中定义结构体的方法
Mar 04 Python
python使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python实现读Excel写入.txt的方法
Apr 29 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
python实现移位加密和解密
Mar 22 Python
Python3.5运算符操作实例详解
Apr 25 Python
谈一谈基于python的面向对象编程基础
May 21 Python
python TCP包注入方式
May 05 Python
Python星号*与**用法分析
Feb 02 #Python
Python模块WSGI使用详解
Feb 02 #Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 #Python
tensorflow中next_batch的具体使用
Feb 02 #Python
Python输出各行命令详解
Feb 01 #Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 #Python
Python实现的视频播放器功能完整示例
Feb 01 #Python
You might like
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
前端开发基础javaScript的六大作用
2020/08/06 Javascript
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Python编写登陆接口的方法
2017/07/10 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
导师推荐信范文
2014/05/09 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
单位委托书
2014/10/15 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
python之基数排序的实现
2021/07/26 Python
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js