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 BeautifulSoup使用方法详解
Nov 21 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
python matlibplot绘制3D图形
Jul 02 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
python同步两个文件夹下的内容
Aug 29 Python
Python操作Excel把数据分给sheet
May 20 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
pytorch中的model=model.to(device)使用说明
May 24 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
js实现常见的工具条效果
2017/03/02 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python编写登陆接口的方法
2017/07/10 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
Python实现最大子序和的方法示例
2019/07/05 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
音乐学个人的自荐书范文
2013/11/26 职场文书
个性发展自我评价
2014/02/11 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
党员自我对照检查材料
2014/08/19 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
python lambda 表达式形式分析
2022/04/03 Python