Java怎么均衡访问多台ftp服务器
多次需要把文件上传到单独的服务器,而程序是在单独的服务器上部署的,在进行文件操作的时候就需要跨服务器进行操作包括:文件上传、文件下载、文件删除等。跨服务器文件操作一般是需要FTP协议和SFTP协议两种,现在就通过Java实现FTP协议的文件上传。要实现FTP操作文件需要引入jar包: commons-net-141jar
百度贴吧
FTP是文件传输协议。在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到FTP服务器上,其他人通过FTP客户端程序来下载所需要的文件。 FTP进行文件传输需要通过端口进行。一般所需端口为: 1 控制链路—TCP端口21。控制器端。用于发送指令给服务器以及等待服务器响应。 2 数据链路---TCP端口20。数据传输端口。用来建立数据传输通道的。主要用来从客户向服务器发送一个文件、从服务器向客户发送一个文件、从服务器向客户发送文件或目录列表。 FTP为了适应不同的网络环境,支持主动连接和被动连接两种模式。这两种模式都主要针对数据链路进行的,跟控制链路无关。 FTP的安全隐患: 一、FTP服务器软件漏洞。 二、明文口令。 三、FTP旗标。 四、通过FTP服务器进行端口扫描。 五、数据劫持。 FTP的安全策略: 一、使用较比安全的系统和FTP服务软件。 二、使用密文传输用户名和口令。 三、更改服务软件的旗标。 四、加强协议安全性。 SFTP是Secure File Transfer Protocol的缩写,是安全文件传送协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。 SFTP是SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。它
这个是可以向服务器端发送文字的程序,就是在客户端发送一句hello在服务器也可以接受到hello,这个程序可以修改一下就可以了。具体修改方法是增加一个定时器,然后把字符流改成字节流,现在有点忙,你先研究啊,近两天帮你写写看。
服务器端:
import javanet;
import javaio;
public class DateServer {
public static void main(String[] args) {
ServerSocket server=null;
try{
server=new ServerSocket(6666);
Systemoutprintln(
"Server start on port 6666");
while(true){
Socket socket=serveraccept();
new SocketHandler(socket)start();
/
PrintWriter out=new PrintWriter(
new OutputStreamWriter(
socketgetOutputStream()
)
);
outprintln(new javautilDate()toLocaleString());
outclose();
/
}
}catch(Exception e){
eprintStackTrace();
}finally{
if(server!=null) {
try{
serverclose();
}catch(Exception ex){}
}
}
}
}
class SocketHandler extends Thread {
private Socket socket;
public SocketHandler(Socket socket) {
thissocket=socket;
}
public void run() {
try{
PrintWriter out=new PrintWriter(
new OutputStreamWriter(
socketgetOutputStream()
)
);
outprintln(
new javautilDate()
toLocaleString());
outclose();
}catch(Exception e){
eprintStackTrace();
}
}
}
客户端:
package combriup;
import javaio;
import javanet;
public class FtpClient {
public static void main(String[] args) {
if(argslength==0) {
Systemoutprintln("Usage:java FtpClient file_path");
Systemexit(0);
}
File file=new File(args[0]);
if(!fileexists()||!filecanRead()) {
Systemoutprintln(args[0]+" doesn't exist or can not read");
Systemexit(0);
}
Socket socket=null;
try{
socket=new Socket(args[1],IntegerparseInt(args[2]));
BufferedInputStream in=new BufferedInputStream(
new FileInputStream(file)
);
BufferedOutputStream out=new BufferedOutputStream(
socketgetOutputStream()
);
byte[] buffer=new byte[10248];
int i=-1;
while((i=inread(buffer))!=-1) {
outwrite(buffer,0,i);
}
Systemoutprintln(socketgetInetAddress()getHostAddress()+" send file over");
inclose();
outclose();
}catch(Exception e){
eprintStackTrace();
}finally{
if(socket!=null) {
try{
socketclose();
}catch(Exception ex){}
}
}
}
}
�0�2我知道apache有个commons net包,其中的FTPClient类可以实现客户端和服务之间的文件传输,但是我如果使用这种方式的话,就得将一台服务器上的文件传到我本地,再将这个文件传到另一台服务器上,感觉这中间多了一步操作;我想请问大家如何能不通过本机,直接操作两台服务器,将文件从一台服务器传到另一台服务器上,如果有人知道实现方式,希望不吝赐教,谢谢了!问题补充:<div class="quote_title"suziwen 写道</div<div class="quote_div"把JAVA程序放在其中一台FTP服务 器A上,通过A服务器上的JAVA登录到另一台FTP服务器,F代码执行文 件的上传,下载。 / /</div / /谢谢你们的回答,你们说的这种方式我明白。
0条评论