commons-net - 详解

news/2025/10/11 21:23:39/文章来源:https://www.cnblogs.com/lxjshuju/p/19136005

概述

网络编程Java库,广泛用于实现与多种网络协议的交互,如FTP、SMTP、POP3、IMAP、NNTP和Telnet等。

maven依赖

<!-- https://mvnrepository.com/artifact/commons-net/commons-net --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.12.0</version></dependency>

示例

FTPClient ftpClient = new FTPClient();
ftpClient.connect("ftp.example.com", 21);  // 连接到FTP服务器
ftpClient.login("username", "password");    // 登录验证
ftpClient.enterLocalPassiveMode();          // 使用被动模式传输文件
FTPFile[] files = ftpClient.listFiles(); // 列出当前目录下的文件
for (FTPFile file : files) {
System.out.println(file.getName()); // 打印文件名
}
ftpClient.makeDirectory("/newdir"); // 创建新目录
ftpClient.deleteFile("/path/to/file.txt"); // 删除文件
if (ftpClient.isConnected()) {
ftpClient.logout();          // 退出登录
ftpClient.disconnect();      // 断开服务器连接
}

常用API

客户端相关

客户端说明
FTPClientFTP协议 TCP客户端,支持文件上传、下载等操作。
FTPSClientFTPS协议 TCP客户端,通过 SSL/TLS 加密传输。
FTPHTTPClient同时支持FTP协议和HTTP协议TCP客户端,用于同时处理文件传输和网页访问的场景
IMAPClientIMAP协议 TCP客户端, 支持从邮件服务器上直接访问和管理邮件,支持邮件文件夹和实时同步功能。
IMAPSClientIMAPS协议 TCP客户端,通过 SSL/TLS 加密传输。
AuthenticatingIMAPClientIMAP协议 协议身份验证TCP客户端
SMTPClientSMTP协议 TCP客户端,支持邮件发送。
SMTPSClientSMTPS协议 TCP客户端,通过 SSL/TLS 加密传输。
AuthenticatingSMTPClientSMTP协议 协议身份验证TCP客户端
POP3ClientPOP3协议 TCP客户端,支持邮件接收。
POP3SClientPOP3S协议 TCP客户端,通过 SSL/TLS 加密传输。
ExtendedPOP3ClientPOP3协议扩展的TCP客户端,实现更复杂的邮件传输功能
TelnetClientTelnet协议 TCP客户端,支持远程登录。
NNTPClientNNTP协议 TCP客户端,支持网络新闻传送协议
RExecClientRExec协议TCP客户端,支持远程执行命令功能
RCommandClientRCommand协议TCP客户端,支持客户端和服务器之间建立连接。
RLoginClientRLogin协议TCP客户端,网络远程登录另一台计算机
DiscardTCPClientRFC863协议的TCP客户端,支持发送数据到服务器并接收服务器响应
EchoTCPClientTCP连接测试客户端,支持验证TCP 服务器是否在指定端口上运行,并且能够正确响应客户端的连接请求。
CharGenTCPClientRFC864 字符生成器协议TCP客户端,用于网络设备测试和调试。
DaytimeTCPClient时间协议TCP客户端,支持获取服务器的日期和时间。
TimeTCPClient时间协议TCP客户端,支持获取服务器的日期时间信息。
FingerClientFinger协议客户端,用于查询远程主机信息。
WhoisClientWhois协议客户端,用于查询域名及IP地址注册信息,
CharGenUDPClientRFC864 字符生成器协议UDP客户端,用于网络设备测试和调试。
DaytimeUDPClient时间协议UDP客户端,支持获取服务器的日期和时间。
TimeUDPClient时间协议UDP客户端,支持获取服务器的日期时间信息。
DiscardUDPClientRFC863协议的UDP客户端,支持发送数据到服务器并接收服务器响应
EchoUDPClientUDP连接测试客户端,支持验证UDP 服务器是否在指定端口上运行,并且能够正确响应客户端的连接请求。
NTPUDPClientNTP协议UDP客户端,用于从时间服务器获取准确的时间信息
TFTPClientTFTP协议UDP客户端,用于文件下载或固件升级等场景。
客户端说明
addProtocolCommandListener(ProtocolCommandListener listener)
removeProtocolCommandListener(ProtocolCommandListener listener)
实现监听和调试网络协议的命令和响应。
connect(InetAddress host)
connect(InetAddress host, int port)
connect(InetAddress host, int port, InetAddress localAddr, int localPort)
connect(String hostname)
connect(String hostname, int port)
connect(String hostname, int port, InetAddress localAddr, int localPort)
配置连接服务器的地址
disconnect()断开连接
getCharset()
setCharset(Charset charset)
获取或配置字符集
getConnectTimeout()
setConnectTimeout(int connectTimeout)
获取或配置连接超时时间
getDefaultPort()
setDefaultPort(int port)
获取或设置默认端口号
getDefaultTimeout()
setDefaultTimeout(int timeout)
获取或设置默认超时时间
getKeepAlive()
setKeepAlive(boolean keepAlive)
获取或配置是否保持长时间的网络连接
getLocalAddress()获取本地地址
getLocalPort()获取本地端口号
getProxy()
setProxy(Proxy proxy)
获取或配置代理对象
getRemoteAddress()
获取远程地址
getRemotePort()
获取远程端口号
getServerSocketFactory()
setServerSocketFactory(ServerSocketFactory factory)
获取或设置ServerSocketFactory
getSoLinger()
setSoLinger(boolean on, int val)
获取或设置Socket连接的关闭行为。on为true时,表示延迟val秒关闭;on为false时,等待数据发送完毕后再正常关闭Socket
getSoTimeout()
setSoTimeout(int timeout)
获取或设置‌输入/输出流操作的超时时间‌
getTcpNoDelay()
setTcpNoDelay(boolean on)
获取或设置Tcp连接是否无延迟
isAvailable()判断连接是否是可用的
isConnected()判断连接是否是否连接成功
setReceiveBufferSize(int size)配置接收缓冲区大小
setSendBufferSize(int size)配置发生缓冲区大小
setSocketFactory(SocketFactory factory)设置Socket工厂
verifyRemote(Socket socket)远程验证连接
客户端说明
FTPClient()构造方法
abort()放弃当前的数据传输
allocate(int bytes)
allocate(int bytes, int recordSize)
allocate(long bytes)
allocate(long bytes, int recordSize)
分配指定数量字节的文件空间。
appendFile(String remote, InputStream local)向一个已经存在的文件追加内容
appendFileStream(String remote)通过输出流向一个已经存在的文件追加内容
changeToParentDirectory()切换当前目录到父目录
changeWorkingDirectory(String path)切换工作目录
completePendingCommand()检查上一个命令是否已经成功完成
configure(FTPClientConfig ftpClientConfig)设置 FTP客户端配置
deleteFile(String path)删除文件
disconnect()断开网络连接
doCommand(String command, String params)发送一个 FTP 命令到服务器
doCommandAsStrings(String command, String params)发送一个 FTP 命令到服务器,并获取命令执行后的响应作为字符串数组。
enterLocalActiveMode()使用本地主动模式
enterLocalPassiveMode()使用本地被动模式
enterRemoteActiveMode(InetAddress host, int port)使用远程主动模式
enterRemotePassiveMode()使用远程被动模式
features()判断是否支持服务器功能
featureValue(String feature)获取服务器功能
featureValues(String feature)获取服务器功能数组
getAutodetectUTF8()
setAutodetectUTF8(boolean autoDetectEncoding)
获取或设置自动检测编码
getBufferSize()
setBufferSize(int bufferSize)
获取或设置缓存大小
getControlKeepAliveReplyTimeoutDuration()
setControlKeepAliveReplyTimeout(Duration timeout)
设置控制连接(通常是与 FTP 服务器的命令通道)在空闲状态下保持活跃的超时时间。
getControlKeepAliveTimeoutDuration()
setControlKeepAliveTimeout(Duration controlIdle)
指定空闲连接在被服务器关闭之前可以保持活跃的最长时间。
getCopyStreamListener()
setCopyStreamListener(CopyStreamListener copyStreamListener)
获取或设置监听器,用来监听文件传输过程中的进度,
getDataConnectionMode()获取数据连接模式
getDataTimeout()
setDataTimeout(Duration timeout)
获取或设置数据超时时间
getListHiddenFiles()
setListHiddenFiles(boolean listHiddenFiles)
获取或设置是否列出隐藏文件
getModificationTime(String path)
setModificationTime(String path, String timeval)
获取或修改文件最后修改时间
getPassiveHost()获取被动连接的IP地址
getPassiveLocalIPAddress()
setPassiveLocalIPAddress(InetAddress passiveLocalHost)
setPassiveLocalIPAddress(String ipAddress)
获取或配置本地被动模式下的IP地址
getPassivePort()
获取被动连接的端口号
getSendDataSocketBufferSize()
setSendDataSocketBufferSize(int sendDataSocketBufferSize)
获取或设置发送数据的缓冲区大小。
getReceiveDataSocketBufferSize()
setReceieveDataSocketBufferSize(int receiveDataSocketBufferSize)
获取或设置接受数据的缓冲区大小
getRestartOffset()
setRestartOffset(long offset)
获取或设置重启偏移量
getSize(String path)
获取文件大小
getStatus()
getStatus(String path)
获取文件状态
getSystemType() 获取系统类型
getSystemTypeOverride()
获取覆盖的系统类型
hasFeature(FTPCmd feature)
hasFeature(String feature)
hasFeature(String feature, String value)
判断是否有指定的功能
initiateListParsing()
initiateListParsing(String path)
initiateListParsing(String parserKey, String path)
初始化解析过程
initiateMListParsing()
initiateMListParsing(String path)
isIpAddressFromPasvResponse()
setIpAddressFromPasvResponse(boolean ipAddressFromPasvResponse)
isRemoteVerificationEnabled()
setRemoteVerificationEnabled(boolean remoteVerificationEnabled)
isUseEPSVwithIPv4()
setUseEPSVwithIPv4(boolean useEPSVwithIPv4)
listDirectories()
listDirectories(String parent)
列出当前目录下的文件夹
listFiles()
listFiles(String path)
listFiles(String path, FTPFileFilter filter)
列出当前目录下的文件
listHelp()
listHelp(String command)
获取系统帮助信息并返回完整的字符串。
listNames()
listNames(String path)
列出当前目录下的文件名
login(String user, String password)
login(String user, String password, String account)
使用提供的用户名和密码登录到FTP服务器。
logout()退出FTP服务器
makeDirectory(String path)创建一个FTP服务器的当前目录的子目录
mdtmCalendar(String path)
mdtmInstant(String path)
mlistDir()
mlistDir(String path)
mlistDir(String path, FTPFileFilter filter)
mlistFile(String path)
printWorkingDirectory()返回当前工作目录的路径名。
reinitialize()初始化
remoteAppend(String fileName)
remoteRetrieve(String fileName)
remoteStore(String fileName)
remoteStoreUnique()
remoteStoreUnique(String fileName)
removeDirectory(String path)移除文件夹
rename(String from, String to)文件重命名
retrieveFile(String remote, OutputStream local)下载文件
retrieveFileStream(String remote)下载文件
storeFile(String remote, InputStream local)文件上传
storeFileStream(String remote)文件上传
storeUniqueFile(InputStream local)
storeUniqueFile(String remote, InputStream local)
storeUniqueFileStream()
storeUniqueFileStream(String remote)
文件上传
sendNoOp()发送一个NOOP命令到FTP服务器。
sendSiteCommand(String arguments)发送一个站点特定的命令。
setActiveExternalIPAddress(String ipAddress)设置在主动模式下的外部IP地址。
setActivePortRange(int activeMinPort, int activeMaxPort)客户端设置在主动模式端口范围。
setFileStructure(int fileStructure)设置文件的结构。
setFileTransferMode(int fileTransferMode)设置传输模式。
setFileType(int fileType)
setFileType(int fileType, int formatOrByteSize)
设置文件类型和格式传送
setParserFactory(FTPFileEntryParserFactory parserFactory)配置解析工厂类
setPassiveNatWorkaroundStrategy(HostnameResolver passiveNatWorkaroundStrategy)
setReportActiveExternalIPAddress(String ipAddress)
structureMount(String path)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12 种 Pandas 测试技巧,让数据处理少踩坑

Pandas 的 bug 有个特点,就是不会在控制台里大喊大叫,而是悄悄藏在 dtype 转换、索引操作、时区处理的某个角落,或者那种跑十万次才能复现一次的边界条件。所以如果你想找到和定位这种隐藏的BUG就需要一套相对简洁的…

02020505 EF Core高级05-实体的5种状态、EntityEntry、AsNoTracking、实体状态跟踪

02020505 EF Core高级05-实体的5种状态、EntityEntry、AsNoTracking、实体状态跟踪 1. EF Core如何知道实体数据变了(视频3-33) 1、实体类没有实现属性值改变的通知机制,EF Core是如何检测到变化的呢? 2、快照更改…

securityCTF 2025 pwn方向题解

V-table 手挖io链子 正常的链子 exit_handler() -> io_flush_all() -> io_overflow() -> io_do_write() 我们修改vtable,使得调用overflow变成调用file_finish,正常的finish链子 exit_handler() -> io_f…

02020507 EF Core高级07-悲观并发控制、乐观并发控制、EF Core连接MySQL、RowVersion

02020507 EF Core高级07-悲观并发控制、乐观并发控制、EF Core连接MySQL、RowVersion 1. EF Core悲观并发控制(3-38) 1.1 并发控制的概念 1、并发控制:避免多个用户同时操作资源造成的并发冲突问题。举例:统计点击…

linux防火墙操作命令

防火墙操作 Linux系统安装完毕后,系统启动时,防火墙自动启动,防火墙拦截了所有端口的访问。接下来我们就需要学习一下,如何操作防火墙,具体指令如下:操作 指令查看防火墙状态 systemctl status firewalld / fire…

02020506 EF Core高级06-EF Core批量删除更新插入、全局筛选器、软删除、全局筛选的性能问题

02020506 EF Core高级06-EF Core批量删除&更新&插入、全局筛选器、软删除、全局筛选的性能问题 1. EF Core如何批量删除、更新、插入(视频3-36) 1.1 EF Core中插入数据(单条) 1、EF Core中不支持高效的删除…

完整教程:游标查询在对话历史场景下的独特优势

完整教程:游标查询在对话历史场景下的独特优势pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

[论文笔记] A Contemporary Survey of Large Language Model Assisted Program Analysis

Survey 站在 security 研究者的角度来关注 LLM + 程序分析的如下几个方向:静态分析:在不同的下游应用上评估 LLM 的作用,下游应用包括 vulnerability detection,malware detection,program verification, static …

C语言入门教程 | 第一讲:C语言零基础入门教程:第一个代码到变量运算详解

C语言入门教程 | 第一讲:C语言零基础入门教程:第一个代码到变量运算详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

机器学习社会影响与导航系统研究

本文介绍了一位硕士研究生通过暑期研究项目探索机器学习社会影响的经历,重点研究基于计算机视觉的盲人导航辅助系统开发,涉及数据可视化、3D地图创建和人工智能公平性等关键技术。硕士研究生利用SURE机会探索机器学习…

【AI算力架构设计分析】1000PetaOps 算力云计算系统设计方案(大模型训练推理专项版)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:漏标(Missing Mark)问题深度解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

251011

JT-JY8T3S1-1Good morning, how can i help you? Hello, i am interested in renting a house somewhere in the town. Right! Could i have your name please? Could i have your name please? Yes, its Steven GF…

一种整理HTML和JS代码的方法

tidy可以整理HTML但不动里面的JS代码。prettier可以整理JS代码,它能不能整理HTML+JS呢? 我写完两个程序后才发现原来可以啊。不过还是把破程序贴出来吧,再说也许发现了prettier的一个bug. get-js.pyfrom bs4 import…

元推理框架,是人类文明的《神农本草经》,源于自指自洽的觉悟与洗礼

元推理框架,是人类文明的《神农本草经》,源于自指自洽的觉悟与洗礼ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891洞察极为精准!ECT-OS-JiuHuaShan 正是人类文明在数字纪元中的《神农本草经》——它并非…

SSL/TLS加密算法:守护网络通信的安全框架

当您在浏览器中看到那个小锁图标时,背后是一套名为SSL/TLS的复杂技术在工作。它的核心使命很简单:确保您在互联网上发送和接收的数据是加密的和完整的。这套技术并非依赖单一算法,而是由几种不同类型的算法协同工作…

未来计划

语文阅读理解训练重点:现代文:练“找中心句 → 梳逻辑结构 → 对应题干信息”。文言文:重点突破“实词、虚词、句式、推断题”。 每周三篇高考真题现代文 + 三篇文言文精读。 作文:继续保持,多练“议论文三段式逻…

【程序员必看】MySQL数据类型全解析:选错类型性能直接掉80%!

【程序员必看】MySQL数据类型全解析:选错类型性能直接掉80%!MySQL数据类型选择直接影响数据库性能。本文详解五大类数据类型:①整数类型应根据范围选择最小够用类型(推荐INT);②浮点类型中DECIMAL适合金融精确计…

NOIP2023

T1 太简单直接 sort 排序和 reverse 反过来就可以了。点击查看代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define For(i,l,r) for(int i=l;i<=r;i++) int n,m; const int…

理解WPF Stylet中Command=“{s:Action 方法名}“的设计与实现 - 实践

理解WPF Stylet中Command=“{s:Action 方法名}“的设计与实现 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…