废话不多说,上代码,具体逻辑分析详见注释,本次目的是实现一个单进程的ssh功能。
这是第一版单进程单任务的模型,随后还会有粘包处理、多进程以及ftp等实例

Server端

#!/usr/bin/env python
# -- coding = 'utf-8' --
# Author Allen Lee
# Python Version 3.5.1
# OS Windows 7import subprocess,socket,socketserver
#服务端:
#准备工作:初始化服务器 ip和端口,以元组形式
ip_port = ('127.0.0.1',1314)
#第一步:创建服务端对象
server = socket.socket()#第二步:绑定ip和端口
server.bind(ip_port)#第三步:启动服务器,,并传递一个数字,这个数字代表服务对大可接受挂起的client数
server.listen(1)#第四步:等待接收client发起的请求(阻塞状态)
#此处循环为了让一个client访问结束后,在重新创建session等待下一个client
while True:conn,addr = server.accept()print(addr)#第五步:接收client发出的信息,recv必须传入一个数字参数,定义最小接收数据单元大小#次循环是为了进行异常处理while True:try:res_data = conn.recv(1024)if len(res_data) == 0:breakprint(res_data,type(res_data))p = subprocess.Popen( str(res_data,encoding = 'utf-8'),shell = True,stdout = subprocess.PIPE )res = p.stdout.read()if len(res) == 0:sendfile = 'cmd_err'else:sendfile = str(res,encoding='gbk')print(send_file)#send_file = res_msg.upper()#第六步:给client回包#由于socket的recv只接受bytes类型,因此在发送时需要转码conn.send(bytes(send_file,encoding='utf-8'))except Exception:break#第七步:完成交互,结束会话conn.close()

Client端:

#!/usr/bin/env python
# -- coding = 'utf-8' --
# Author Allen Lee
# Python Version 3.5.1
# OS Windows 7
import socket,subprocess
#客户端:
#创建目标服务器ip和端口
ip_port = ('127.0.0.1',1314)
#第一步:创建socket对象
client = socket.socket()#第二步:连接目标服务器的端口和ip
client.connect(ip_port)#第三步:发送信息
#循环,如果用户输入空内容,则返回重新输入
while True:send_file = input('>>: ').strip()#设置主动断开的开关if send_file == 'exit':break#判断如果为空则跳出本次循环,让用户重新输入if len(send_file) == 0:continue#socket的recv方法只能接受bytes数据类型,因此需要bytes对input信息以utf-8解码client.send(bytes(send_file,encoding='utf-8'))#第四步:收服务端回复的包res_msg = client.recv(1024)print(str(res_msg,encoding='utf-8'))
#第五步:结束本次会话
client.close()

Python案例-网络编程-socket入门-serverclient相关推荐

  1. 树莓派 Python 网络编程 (Socket入门)

    树莓派  Python 网络编程 (Socket入门) 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络 ...

  2. 树莓派:入门(基础配置、GPIO、网络编程 Socket)

    树莓派在创客中越来越发挥重要的作用,树莓派的强大兼用性和功能丰富,得到 DIY 朋友的青睐.带大家认识目前最新的树莓派 3B+,从零基础到入门,到动手做有趣的应用. 本场 Chat 首先会带领大家入门 ...

  3. Python网络编程(Socket)

    Python网络编程(Socket) Python提供了两个访问级别的网络服务.在一个较低的水平,您可以访问底层操作系统的基本套接字支持,允许你实现面向连接和无连接协议的客户端和服务器 Python有 ...

  4. 【Socket网络编程进阶与实战】------ Socket网络编程快速入门

    前言 本篇博客主要是分享,socket网络编程进阶与实践☞socket网络编程快速入门 一.聊一聊Socket 学习目标与收获

  5. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  6. Python之网络编程(TCP套接字与UDP套接字)

    文章目录 基于tcp的套接字 实现目标 tcp服务端源码 tcp客户端源码 tcp效果实现 基于udp的套接字 udp作用介绍 udp服务端源码 udp客户端源码 udp效果实现 用udp实现一个时间 ...

  7. pdf python 3.7编程快速入门 潘中强_无python基础,这些书籍可以帮您快速入门。

    利用Python进行数据分析> 定 价:119 元 作者:韦斯·麦金尼(Wes McKinney)著;徐敬一译 ISBN:9787111603702 出 版 社:机械工业出版社 学习Python ...

  8. 用 Python 写网络编程(四)

    本文首发于TesterHome社区,作者是资深游戏测试开发工程师陈子昂.用 Python 写网络编程共四篇,今天分享的是第四篇.原文链接:https://testerhome.com/topics/2 ...

  9. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

最新文章

  1. 一些很实用且必用的小脚本代码:
  2. linux shell sed 添加空行
  3. RedisDesktopManager客户端可视化工具下载安装与使用
  4. 通过SSH克隆远程仓库(GitLab)到本地
  5. 常用的xshell用vi命令编辑文本
  6. 2017秋-软件工程第八次作业-第九周例行总结
  7. mysql left join右边有多条_left join 右表多条数据重复
  8. 主动轮廓模型——Snake分割算法(MATLAB)
  9. 阿里成立“平头哥”半导体公司,明年推神经网络芯片
  10. 【思维导图】【专家视角】破解马赛克战之系统发展思考
  11. chrome浏览器怎么把整个网页截图保存
  12. oracle发生20001,Oracle IMP数据时报20001错误
  13. 四个同学打碎花盆c语言,第八册三、四单元试卷
  14. 红尘牵绊,江湖儿女惹情长
  15. kmsautonet是一款免费的微软系统和办公软件激活工具,简称kms激活工具
  16. 《Qt5:键盘事件》
  17. 3.23.3 线性回归的从零开始实现|Pytorch简洁实现
  18. linux配置usb主从_基于Linux的USB主/从设备之间的三种通信方式
  19. 小米java后端实习一面面经
  20. [POI2005]DWU-Double-row(图论?)

热门文章

  1. 【Java 类和对象】
  2. Chapter 2 Constraint Satisfaction: An Emerging Paradigm
  3. 常用的HTTP请求方法
  4. java怎样定义一个对象数组,java定义一个对象数组
  5. IDEA注释方式快捷键
  6. 如何写hive的udf函数?
  7. (转)硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍...
  8. 中文文本分析, Text-Analysis
  9. 港科夜闻|香港科技大学(广州)与广东联通签署多方位战略合作协议
  10. CV:计算机视觉技最强学习路线