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 相关文章推荐
python嵌套函数使用外部函数变量的方法(Python2和Python3)
Jan 31 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
python生成并处理uuid的实现方式
Mar 03 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python中@property的作用和getter setter的解释
Dec 22 Python
python基于opencv 实现图像时钟
Jan 04 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获取301跳转URL简单实例
2013/12/16 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
php实现微信企业转账功能
2018/10/02 PHP
PHP 文件上传限制问题
2019/09/01 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
python实现决策树分类(2)
2018/08/30 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
Python函数和模块的使用总结
2019/05/20 Python
Python多进程编程常用方法解析
2020/03/26 Python
Django更新models数据库结构步骤
2020/04/01 Python
Python如何安装第三方模块
2020/05/28 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
盛大二次面试题
2016/11/18 面试题
生物制药专业自我鉴定
2014/02/19 职场文书
教师个人自我评价范文
2014/04/13 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python