Python网络编程之TCP套接字简单用法示例


Posted in Python onApril 09, 2018

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

上学期学的计算机网络,因为之前还未学习python,而java则一知半解,C写起来又麻烦,所以一直都没有真正实现过TCP套接字编程。

最近学习了python,而用它来写套接字又十分方便简单,所以当然要试一试咯。

下面根据代码来介绍一下最简单的tcp程序,由客户端输入数据,发送给服务器,服务器加上时间后返回给客户端

#!/usr/bin/python
'test TCP server'
from socket import *  #套接字所需要的模块
from time import ctime  #时间模块
HOST = ''  #主机名,为空,表示可以绑定在任何有效的地址上。
PORT = 21567  #随机选的可用端口
BUFSIZ = 1024  #发送数据的缓冲区
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)  #第一个参数是socket_family,此处用常用的AF_INET,第二个参数是流套接字,即创建的是tcp
tcpSerSock.bind(ADDR)  #套接字与地址绑定
tcpSerSock.listen(5)  #开始监听,参数表示允许的最大连接数
while True:
  print 'waiting for connection...'
  tcpCliSock, addr = tcpSerSock.accept()  #打开大门等待客人,accept返回一个元组(connection,address)。第一个元素是新的socket对象,服务器必须通过它与客户通信;第二个是客户的地址。
  print '...connected from:',addr
  while True:
    data = tcpCliSock.recv(BUFSIZ)  #洗耳恭听,把客人的话记录到data中
    if not data:  #客人话说完了,送客
      break
    tcpCliSock.send('[%s] %s' %(ctime(), data))  #发送当前时间,以及数据给客人
  tcpCliSock.close()  #送客,关闭与该客人通信的套接字
tcpSerSock.close()  #因为上面是死循环,此处不是必须的,只是提醒大家离开的时候务必要关门!

上面用到了两个套接字,第一个tcpSerSock称为欢迎套接字,第二个tcpCliSock才是真正负责与客户端通信的套接字,这样做的好处是,一个服务器可以同时接待多个客人。

下面则是客户端的代码,非常简单:

#!/usr/bin/python
'test tcp client'
from socket import *
HOST = 'localhost'  #因为我是在同一台机器上运行,所以是localhost,不同主机的话,此处需要改成服务器地址
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)  #客户端只需要一个套接字
tcpCliSock.connect(ADDR)  #发起连接
while True:
  data = raw_input('>')
  tcpCliSock.send(data)  #发送数据
  if not data:
    break
  data = tcpCliSock.recv(BUFSIZ)  #接收数据
  print data
tcpCliSock.close()

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

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

Python 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
Python线性方程组求解运算示例
Jan 17 Python
python+opencv识别图片中的圆形
Mar 25 Python
python3实现磁盘空间监控
Jun 21 Python
python装饰器常见使用方法分析
Jun 26 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Python设计密码强度校验程序
Jul 30 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
Python 循环读取数据内存不足的解决方案
May 25 Python
python3 读写文件换行符的方法
Apr 09 #Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 #Python
Python生成任意范围任意精度的随机数方法
Apr 09 #Python
python网络爬虫学习笔记(1)
Apr 09 #Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 #Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 #Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 #Python
You might like
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
JS实现图片切换效果
2018/11/17 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
原生js实现日历效果
2020/03/02 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
深入理解Python3中的http.client模块
2017/03/29 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
秘书专业自荐信范文
2013/12/26 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
服装设计专业求职信
2014/06/16 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书