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生成日历实例解析
Aug 21 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
Python使用while循环花式打印乘法表
Jan 28 Python
Django uwsgi Nginx 的生产环境部署详解
Feb 02 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
django model通过字典更新数据实例
Apr 01 Python
深入理解python协程
Jun 15 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
set_include_path在win和linux下的区别
2008/01/10 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
js字符编码函数区别分析
2011/12/28 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
JS错误处理与调试操作实例分析
2020/04/13 Javascript
Python中给List添加元素的4种方法分享
2014/11/28 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
使用Python写CUDA程序的方法
2017/03/27 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
python输出决策树图形的例子
2019/08/09 Python
Python如何计算语句执行时间
2019/11/22 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
Python图像读写方法对比
2020/11/16 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
少年闰土教学反思
2014/02/22 职场文书
行政部岗位职责范本
2014/03/13 职场文书
小学清明节活动总结
2014/07/04 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
六年级小学生评语
2014/12/26 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技