python3实现TCP协议的简单服务器和客户端案例(分享)


Posted in Python onJune 14, 2017

利用python3来实现TCP协议,和UDP类似。UDP应用于及时通信,而TCP协议用来传送文件、命令等操作,因为这些数据不允许丢失,否则会造成文件错误或命令混乱。下面代码就是模拟客户端通过命令行操作服务器。客户端输入命令,服务器执行并且返回结果。

TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

TCP客户端

from socket import *

host = '192.168.48.128'
port = 13141
addr = (host,port)
bufsize=1024

tcpClient = socket(AF_INET,SOCK_STREAM) # 这里的参数和UDP不一样。
tcpClient.connect(addr) #由于tcp三次握手机制,需要先连接

while True:
  data = input('>>> ').encode(encoding="utf-8")
  if not data:
    break
  # 数据收发和UDP基本一致
  tcpClient.send(data) 
  data = tcpClient.recv(bufsize).decode(encoding="utf-8") 
  print(data)

tcpClient.close()

TCP客户端

from socket import *
from time import ctime
import os 

host = ''
port = 13140
bufsize = 1024
addr = (host,port)

tcpServer = socket(AF_INET,SOCK_STREAM)
tcpServer.bind(addr)
tcpServer.listen(5) #这里设置监听数为5(默认值),有点类似多线程。

while True:
  print('Waiting for connection...')
  tcpClient,addr = tcpServer.accept() #拿到5个中一个监听的tcp对象和地址
  print('[+]...connected from:',addr)

  while True:
    cmd = tcpClient.recv(bufsize).decode(encoding="utf-8") 
    print('  [-]cmd:',cmd)
    if not cmd:
      break
    ###这里在cmd中执行来自客户端的命令,并且将结果返回###
    cmd = os.popen(cmd) ###os.popen(cmd)对象是file对象子类,所以可以file的方法
    cmdResult = cmd.read()
    cmdStatus = cmd.close()
    #################################################
    data = cmdResult if (not cmdStatus) else "ERROR COMMAND"
    tcpClient.send(data.encode(encoding="utf-8"))

  tcpClient.close() #
  print(addr,'End')
tcpServer.close() #两次关闭,第一次是tcp对象,第二次是tcp服务器

以上这篇python3实现TCP协议的简单服务器和客户端案例(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python牛刀小试密码爆破
Feb 03 Python
python实现的一个火车票转让信息采集器
Jul 09 Python
用Python展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
让Python代码更快运行的5种方法
Jun 21 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
Python异常处理操作实例详解
May 10 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
Python之re操作方法(详解)
Jun 14 #Python
Python之py2exe打包工具详解
Jun 14 #Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 #Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 #Python
Python实现的下载网页源码功能示例
Jun 13 #Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 #Python
老生常谈python之鸭子类和多态
Jun 13 #Python
You might like
php 中include()与require()的对比
2006/10/09 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
浅谈Python中函数的参数传递
2016/06/21 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python Web版语音合成实例详解
2019/07/16 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
临床医师专业个人自我评价范文
2013/11/07 职场文书
会计电算化专业毕业生自荐信
2013/12/20 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2014年学生会工作总结
2014/11/07 职场文书
放射科岗位职责
2015/02/14 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python
Python Pandas解析读写 CSV 文件
2022/04/11 Python
Python实现信息管理系统
2022/06/05 Python