commons-net
概述
网络编程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
客户端相关
- 可用客户端
客户端 | 说明 |
---|---|
FTPClient | FTP协议 TCP客户端,支持文件上传、下载等操作。 |
FTPSClient | FTPS协议 TCP客户端,通过 SSL/TLS 加密传输。 |
FTPHTTPClient | 同时支持FTP协议和HTTP协议TCP客户端,用于同时处理文件传输和网页访问的场景 |
IMAPClient | IMAP协议 TCP客户端, 支持从邮件服务器上直接访问和管理邮件,支持邮件文件夹和实时同步功能。 |
IMAPSClient | IMAPS协议 TCP客户端,通过 SSL/TLS 加密传输。 |
AuthenticatingIMAPClient | IMAP协议 协议身份验证TCP客户端 |
SMTPClient | SMTP协议 TCP客户端,支持邮件发送。 |
SMTPSClient | SMTPS协议 TCP客户端,通过 SSL/TLS 加密传输。 |
AuthenticatingSMTPClient | SMTP协议 协议身份验证TCP客户端 |
POP3Client | POP3协议 TCP客户端,支持邮件接收。 |
POP3SClient | POP3S协议 TCP客户端,通过 SSL/TLS 加密传输。 |
ExtendedPOP3Client | POP3协议扩展的TCP客户端,实现更复杂的邮件传输功能 |
TelnetClient | Telnet协议 TCP客户端,支持远程登录。 |
NNTPClient | NNTP协议 TCP客户端,支持网络新闻传送协议 |
RExecClient | RExec协议TCP客户端,支持远程执行命令功能 |
RCommandClient | RCommand协议TCP客户端,支持客户端和服务器之间建立连接。 |
RLoginClient | RLogin协议TCP客户端,网络远程登录另一台计算机 |
DiscardTCPClient | RFC863协议的TCP客户端,支持发送数据到服务器并接收服务器响应 |
EchoTCPClient | TCP连接测试客户端,支持验证TCP 服务器是否在指定端口上运行,并且能够正确响应客户端的连接请求。 |
CharGenTCPClient | RFC864 字符生成器协议TCP客户端,用于网络设备测试和调试。 |
DaytimeTCPClient | 时间协议TCP客户端,支持获取服务器的日期和时间。 |
TimeTCPClient | 时间协议TCP客户端,支持获取服务器的日期时间信息。 |
FingerClient | Finger协议客户端,用于查询远程主机信息。 |
WhoisClient | Whois协议客户端,用于查询域名及IP地址注册信息, |
CharGenUDPClient | RFC864 字符生成器协议UDP客户端,用于网络设备测试和调试。 |
DaytimeUDPClient | 时间协议UDP客户端,支持获取服务器的日期和时间。 |
TimeUDPClient | 时间协议UDP客户端,支持获取服务器的日期时间信息。 |
DiscardUDPClient | RFC863协议的UDP客户端,支持发送数据到服务器并接收服务器响应 |
EchoUDPClient | UDP连接测试客户端,支持验证UDP 服务器是否在指定端口上运行,并且能够正确响应客户端的连接请求。 |
NTPUDPClient | NTP协议UDP客户端,用于从时间服务器获取准确的时间信息 |
TFTPClient | TFTP协议UDP客户端,用于文件下载或固件升级等场景。 |
- SocketClient(所有客户端的抽象父类)
客户端 | 说明 |
---|---|
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
客户端 | 说明 |
---|---|
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) |