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 相关文章推荐
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
python实现读取并显示图片的两种方法
Jan 13 Python
浅谈五大Python Web框架
Mar 20 Python
python下载图片实现方法(超简单)
Jul 21 Python
Python实现批量压缩图片
Jan 25 Python
python sort、sort_index方法代码实例
Mar 28 Python
python中列表的切片与修改知识点总结
Jul 23 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
Python实现列表拼接和去重的三种方式
Jul 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
javascript的函数
2007/01/31 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
python多重继承新算法C3介绍
2014/09/28 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python 利用zmail库发送邮件
2020/09/11 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
2015公务员试用期工作总结
2014/12/12 职场文书
教师自荐信范文
2015/03/06 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python