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动态参数用法实例分析
May 25 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
在Python中表示一个对象的方法
Jun 25 Python
linux环境下Django的安装配置详解
Jul 22 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
Python编程编写完善的命令行工具
Sep 15 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
php反射应用示例
2014/02/25 PHP
php session 写入数据库
2016/02/13 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
PDO::commit讲解
2019/01/27 PHP
如何实现JS函数的重载
2006/09/22 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python 穷举指定长度的密码例子
2020/04/02 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
夜大自我鉴定
2013/10/31 职场文书
学生出入校管理制度
2014/01/16 职场文书
年度考核自我评价
2014/01/25 职场文书
调解员先进事迹材料
2014/02/07 职场文书
小班开学寄语
2014/04/04 职场文书
寄语是什么意思
2014/04/10 职场文书
酒店管理求职信
2014/06/09 职场文书
优秀班集体申报材料
2014/12/25 职场文书
导游词欢迎词
2015/02/02 职场文书
公司承诺书格式范文
2015/04/28 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android