Jsch网络工具包的使用及源码简析

article/2025/10/29 11:30:23

一、背景

最近,导师安排了些看论文文献并整理论文至文件服务器的工作,在实验的过程中,我们知道常见的上传文件至服务器有以下方式。

  • ftp/sftp协议进行上传
  • ssh连接,并通过scp命令进行上传
  • 通过xftp、xshell、ftplina等图形化工具上传

还记得大二刚学编程时,觉得采用xftp上传文件到服务器,并且能通过静态服务器nginx去访问这些静态资源,就觉得很厉害。也固化认为上传文件就得需要这工具,后面学习了计算机网络,才知道,图形化工具的本身也是通过调用底层的通信API进行交互,而交互的过程则需要协议去标准化。那么,Java这样的高级语言也肯定有相应的包去处理这网络通信,经了解,Jsch则可以满足;

二、Jsch的基本介绍

基本介绍

JSch 是 SSH2 的一个纯 Java 实现。它允许你连接到一个 sshd 服务器,使用端口转发,X11 转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个 J2ME 版本用来在手机上直连 SSHD 服务器。

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。

简单使用

从基本介绍,我们可以明白该包是基于ssh,估计也可以使用shell进行操作。另外是基于应用层,那么我们根据ISO模型,也大致可以去推测它的设计,可能会有session会话设计、socket进行通信,而对于IP网络、路由则无需应用程序去考虑。基于该概念,看看简单的使用。

  • 创建JSch的对象
  • 创建会话,并进行连接会话(HOST、PORT,通信的本质是进程之间的通信,可以联系JDBC、Netty等通信设计)
  • 进行验证、设置密码(可同第二步)
  • 进行请求连接、
  • 获取通道,通信的过程实则为IO的连接过程
  • 进行sftp的操作,例如get\put等,sftp协议提供的相应指令
public class SftpUtil {private final static String HOST = "192.168.159.144";private final static String USER_NAME = "root";private final static String PASSWORD = "123321";private final static Integer PORT = 22;@Testpublic void testSftp(){//  ChannelSf//ChannelSftp channelSftp = new ChannelSftp();// 1.创建对象JSch jSch = new JSch();// 2.创建会话--会话层--sftp应用层协议 向下 是会话层try {Session session = jSch.getSession(USER_NAME,HOST,PORT);session.setPassword(PASSWORD);Properties config = new Properties();config.put("StrictHostKeyChecking", "no");session.setConfig(config);session.setTimeout(30000);// 分析 该方法的实现过程,如何采用socket进行通信实现session.connect();ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");channelSftp.connect();System.out.println(channelSftp.lpwd());// 结合shell脚本命令--高级逻辑式编程语言+shell脚本式语言 → 联系、贯通} catch (JSchException e) {e.printStackTrace();}}
}

简单看看源码设计

Jsch是去请求服务端,并进行连接操作,因此只设计client端的设计,而不关心服务端。

  • 整体结构
    对于端的设计:Request+Socket;Request抽象类、RequestSftp\ RequestShell等子类。
    对于消息的设计:Channel + Buffer + Packet
    对于通信的建立:Session + IO
    对于安全保证:UserAuth + Config等
    在这里插入图片描述
  • 跟踪一下过程
  1. 创建会话、配置连接信息
    在这里插入图片描述
    在会话中进行初始化了buf,packet,已经host,username等信息。而Session设计为一个线程任务(Session implements Runnable),一段会话是一次执行过程。此处未有PASSWORD的信息初试化,而是需要单独 session.setPassword(PASSWORD); ,可能是因为ssh连接时,先进行连接再进行密码认证。
    在这里插入图片描述
    其他的一些配置:设置超时、等,对于客户端,超时处理是十分必要的。也是服务保障的关键。
    在这里插入图片描述
  2. connect进行连接、通信
  • 创建socket,并进行IO的传输,至此传输层的处理结束
    在这里插入图片描述
  1. 打开channel,进行应用层的处理
  • 根据type控制参数进行创建具体的Channell。
  • 创建初始化相应的请求队列,并进行逐一请求,写入读出IO流
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

三、其他网络工具包

网络工具包


http://chatgpt.dhexx.cn/article/DICcORlH.shtml

相关文章

JSch学习笔记

JSch笔记 第 1 章 JSch简介 1.1 简述 1)jsch是ssh2的一个纯Java实现。它允许你连接到一个sshd服务器,使用端口转发、X11转发、文件传输等。 2)SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。 3)…

OrmLite For Android 学习笔记 之一 Ormlite 介绍及使用

Android 自带的数据库是SQLite,这种数据库适合用于于小型设备中。在实际使用数据库的应用中,我们经常需要把数据库记录转换为 业务对象实体。在桌面应用或者web应用中我们有很多成熟的ORM工具。Android本身没有提供这么一种工具。 Ormlite 是一种ORM工具…

OrmLite 数据库使用大全

本文介绍OrmLite的数据库表的使用以及在项目中选择他的原因。 1. 选用 OrmLite 数据库的原因 目前用的最多的就是GreenDAO 和 OrmLite 了,两者各有优缺点。 GreenDAO 性能高,号称Android最快的关系型数据库;内存占用较小;支持数…

Android ORM数据库之OrmLite使用框架及源码分析

一、简介 OrmLite是一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机率。  首先可以去它的官网看看www.ormlite.com,它的英文全称是Object Relational Mapping&am…

ORMLite完全解析(一)通过实例理解使用流程

在android中使用原始的SQLiteOpenHelper操作数据库显得过于繁琐,而且对于不是很熟悉数据库操作的人来说比较容易出现一些隐藏的漏洞。所以一般都会想到使用相关的ORMLite框架完成开发,类似于J2EE开发中的Hibernate和Mybatis等等,在提高开发效…

Android数据库ORMlite框架

前言 由于第二章是整个文档的核心,内容也很多,所以分次翻译。下一章的内容会继续本章接着翻译。 ------------------------------------------------------------------------------------- 2 如何使用 这一章进入到更多详细地使用ORMLite的各种功能。 2…

Ormlite 介绍 一

概述 ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。 官方网站:http://ormlite.com/ 如果需要开发android,只需要下载core和android两个jar包: ORMlite的使用 1,建立映射关系 Ormlite与数据库…

ormlite介绍一

概述 ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。 官方网站:http://ormlite.com/ 如果需要开发android,只需要下载core和android两个jar包&#xff…

Lite-Orm数据库

1. 初步认识 GItHub库 自动化且比系统自带数据库操作快1倍! LiteOrm是android上的一款数据库(ORM)框架库。速度快、体积小、性能高。开发者基本一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。 2.导入orm相…

Android 数据库框架ormlite 使用精要

Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机率。 ormlite是什么? 首…

ormlite 的简单应用

在android开发中还有哪些技术可以方便的操作数据库,我不大清楚,今天学习了一下 ormlite,觉得还不错,非常方便。 ormlite官网下载:http://ormlite.com/releases/ 1、引入jar包 2、写实体类 package com.example.aandr…

OrmLite for android--Ormlite的大概介绍

Ormlite 是一种ORM工具,并且是一种轻量级别的工具。我们可以使用它来对Android中内嵌的sqlite数据库进行相关的操作。Android 的应用程序应使用 Ormlite for android 版本来进行相关的开发。Ormlite for android 提供两个jar库:ormlite-android-4.22.j…

Ormlite 介绍 一

概述 ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。 官方网站:http://ormlite.com/ 如果需要开发android,只需要下载core和android两个jar包&#xff…

Ormlite基本使用

首先需要导入ORMLite的依赖:在build.gradle中加入以下代码: implementation com.j256.ormlite:ormlite-android:5.1implementation com.j256.ormlite:ormlite-core:5.1建立Bean类(以OneTableBean为例) import com.j256.ormlite.f…

Android 数据库框架ormlite 使用

ormlite是什么? 首先可以去它的官网看看www.ormlite.com,它的英文全称是Object Relational Mapping,意思是对象关系映射;如果接触过Java EE开发的,一定知道Java Web开发就有一个类似的数据库映射框架——Hibernate。简…

Android ORMLite数据库简介

 一般的项目中,Android自身提供的SQLite数据库,可以满足轻量级的数据存储应用,但是,只要是存储模型稍微复杂的项目,以及数据结构模型复杂的应用,就很难再用SQLite支撑整个项目的数…

python的网络请求库urllib、urllib2、urllib3、request的联系

文章目录 1. 简介2. urllib3. urllib24. urllib35. requests6. 相关文章 1. 简介 urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件,它们通过使用统一资源定位符(URL)并结合re模块完成很多意想不到的操作。 urllib&am…

python3安装urllib2_python3.6想使用urllib2包怎么办

Python3.6.6或者说python3.x找不到urllib2语法问题修改之后,会报一个没有安装urllib2的包的错误。 通过pip install urllib2也会提示找不到包。(推荐学习:Python视频教程) 通过pip3 install urllib2也会提示找不到包。 这是因为builtwith依赖于urllib2包…

pythonurllib2方法_解决python3.6想使用urllib2包的方法

解决python3.6想使用urllib2包的方法 发布时间:2020-08-11 14:24:50 来源:亿速云 阅读:131 作者:小新 小编给大家分享一下解决python3.6想使用urllib2包的方法,相信大部分人都还不怎么了解,因此分享这篇文章…

python安装urllib2_Python如何安装urllib2库

urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用)。 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页,我们先学习urllib2。urllib2 是 Python2.7 自带的模块(不需要下载,…