前言:使用python3.x写的socket编程,本人wechat:YWNlODAyMzU5MTEzMTQ=

如果内容有错,请指出来。

ssh服务端

# 1.接收一个连接实例
# 2.接收数据
# 3.判断数据是否为空
# 4.执行命令
# 5.判断命令执行结果
# 6.发送命令结果长度
# 7.发送命令执行结果 import socket,os
server=socket.socket()
server.bind(("localhost",22)) #绑定要监听的端口
server.listen() #开始监听
while True:
conn,addr=server.accept() #接收一个客户端实例conn,addr为其地址
print("new conn:",addr)
while True:
data=conn.recv(1024)
if not data:
print("客户端断开")
break
print("执行命令:",data.decode())
cmd_res=os.popen(data.decode()).read()
if len(cmd_res)==0:
cmd_res="wrong"
conn.send(str(len(cmd_res.encode())).encode())
client_ack=conn.recv(1024) #等待客户端响应,防止粘包
conn.send(cmd_res.encode())
print("等待新指令")
server.close()

ssh客户端

import socket
client=socket.socket()
client.connect(("localhost",22))
while True:
cmd=input(">>:").strip()
if len(cmd)==0:continue
client.send(cmd.encode())
cmd_res_size=client.recv(1024) #接收命令结果的长度
client.send("准备好了".encode())
recv_size=0
while recv_size<int(cmd_res_size.decode()):
cmd_res=client.recv(1024)
recv_size+=len(cmd_res)
print(cmd_res.decode())
print("命令结果大小:",cmd_res_size.decode())
print("已接受结果大小:",recv_size)
client.close()

ftp服务端

# 1.检测文件是否存在
# 2.发送文件大小给客户端
# 3.打开文件,开始边读边发数据
# 4.发送md5
import socket,os,hashlib
server=socket.socket()
server.bind(("0.0.0.0",2121))
server.listen()
while True:
conn,addr=server.accept()
print("new conn:",addr)
while True:
data=conn.recv(1024)
if not data:
print("client lost")
break
cmd,filename=data.decode().split()
if os.path.isfile(filename):
with open(filename,"rb") as f:
file_size=os.stat(filename).st_size
print(file_size)
conn.send(str(file_size).encode())
conn.recv(1024)
m=hashlib.md5()
for line in f:
m.update(line)
conn.send(line)
print("file md5:",m.hexdigest())
conn.recv(1024)
conn.send((m.hexdigest()).encode())
print("send done")
server.close()

ftp客户端

import socket
client=socket.socket()
client.connect(("0.0.0.0",2121))
while True:
cmd=input(">>:").strip()
if len(cmd)==0:continue
if cmd.startswith("get"):
client.send(cmd.encode())
file_size=client.recv(1024)
client.send(b"ready to recv data")
recv_size=0
filename=cmd.split()[1]
with open(filename+".new","wb") as f:
while recv_size<int(file_size.decode()):
data=client.recv(1024)
recv_size+=len(data)
f.write(data)
client.send(b"over")
print(recv_size)
print(file_size.decode())
file_md5=client.recv(1024)
print("file md5:",file_md5.decode())
print("recv done")
client.close()

Python网络编程2018-01-26更新的更多相关文章

  1. python网络编程-01

    python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...

  2. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

  3. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  4. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  5. Python学习(22)python网络编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  6. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  7. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  8. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

  9. python 网络编程(Socket)

    # from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...

  10. python 网络编程 IO多路复用之epoll

    python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解     此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...

随机推荐

  1. "export" in SHELL

    在shell中,若某一变量需要在随后的子程序中运行,则需要以 export 来使变量变成环境变量: export var export的用法总结: 1:一个shell中用export定义的变量,只对当 ...

  2. python如何实现多线程

    一个线程就是一个轻量级进程,多线程能让我们一次执行多个线程. python是多线程语言,其内置有多线程工具包 python中GIL(全局解释器锁)确保一次执行单个线程.一个线程保存GIL并在将其传递给 ...

  3. 41和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...

  4. UI控件之UIScrollView

    UIScrollView:提供了滚动功能,用来显示超过一屏的视图 创建滚动视图 UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame: ...

  5. Python学习进程(1)Python简介

        Python是一种结合了"解释性"."编译性"."互动性"和"面向对象"的脚本语言. (1)官方介绍: Pyth ...

  6. excel中如何取消自动超链接?

    最近做的表格有点多,年终述职也到了.总有一些地方生疏了,幸好还有点小印象.记录下来,以后可以回来看看. 方法一 适合单个链接的取消 1 输入网址后,按回车键确认,快捷键ctrl+z,即可取消,这种不好 ...

  7. 协程(Coroutines)实现fibonacci函数

    def fibonacci(): yield 1 yield 1 l=[1,1] while True: l=[l[-1],sum(l[-2:])] yield l[-1] def tribonacc ...

  8. [原创]spring及springmvc精简版--AOP

    接上一篇:[原创]spring及springmvc精简版--IOC 理解AOP.java是一种面向对象的语言.而AOP是面向切面,在我看来是面向逻辑或者业务编程,它是对一组逻辑的抽象和分配. 经典例子 ...

  9. 【鸟哥的Linux私房菜】笔记

    操作系统核心的功能! 驱动程序与操作系统的关系 2. [计算机组成之组件] 3.CPU实际要处理的数据完全来自于主存储器,这是一个很重要的概念! 4.CPU是整个计算机系统最重要的部分,那么目前世界上 ...

  10. 0625 Django 基础

    相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 python man ...