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 查找文件夹下所有文件 实现代码
Jul 01 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
Python __slots__的使用方法
Nov 15 Python
看看如何用Python绘制小米新版天价logo
Apr 20 Python
Python import模块的缓存问题解决方案
Jun 02 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
Python清空文件并替换内容的实例
2018/10/22 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
致跳远运动员广播稿
2014/02/11 职场文书
警示教育活动总结
2014/05/05 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
公务员检讨书
2014/11/01 职场文书
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript