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中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
python删除列表中重复记录的方法
Apr 28 Python
Python pickle模块用法实例分析
May 27 Python
python实现的文件同步服务器实例
Jun 02 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
python中shell执行知识点
May 06 Python
如何在python中处理配置文件代码实例
Sep 27 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 Python
Django 实现jwt认证的示例
Apr 30 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_openssl.dll的作用
2013/07/01 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
Yii框架安装简明教程
2020/05/15 PHP
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
Vue中props的详解
2019/05/16 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Python enumerate内置库用法解析
2020/02/24 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
秦兵马俑教学反思
2014/02/07 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
php 原生分页
2021/04/01 PHP
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
Golang连接并操作MySQL
2022/04/14 MySQL
golang生成并解析JSON
2022/04/14 Golang