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中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
VSCode下好用的Python插件及配置
Apr 06 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python实现FM算法解析
Jun 18 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
python3实现猜数字游戏
Dec 07 Python
Python下应用opencv 实现人脸检测功能
Oct 24 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
基于Python快速处理PDF表格数据
Jun 03 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
Python自动化操作实现图例绘制
Jul 09 Python
python matplotlib绘制三维图的示例
Sep 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
有关php运算符的知识大全
2011/11/03 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
php定时执行任务设置详解
2015/02/06 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
互动出版网:专业书籍
2017/03/21 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
机关单位动员会主持词
2014/03/20 职场文书
新闻发布会主持词
2014/03/28 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
人与自然的观后感
2015/06/18 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android