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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
Python下Fabric的简单部署方法
Jul 14 Python
win10系统中安装scrapy-1.1
Jul 03 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
django启动uwsgi报错的解决方法
Apr 08 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
一个php作的文本留言本的例子(四)
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
JS 验证码功能的三种实现方式
2018/11/26 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
python selenium firefox使用详解
2019/02/26 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
校园文化标语
2014/06/18 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
入党介绍人考察意见
2015/06/01 职场文书
婚宴致辞
2015/07/28 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
Django给表单添加honeypot验证增加安全性
2021/05/06 Python