當前位置:首頁 » 文件管理 » 編寫FTP服務的掃描程序

編寫FTP服務的掃描程序

發布時間: 2023-05-24 21:33:20

1. 理光3501安裝ftp掃描方法

理光FTP掃描設置教程
此教程主要用來解決WIN10系統下不能使用SMB文件夾掃描的問題,由於舊的SMB協議存在安全漏洞,所以微軟在新的系統,WIN8/WIN10/SERVER2012 2016 2018里使用了新的SMB傳輸協議,理光03以下的機器使用的是老的SMB協議,所以要解決這個問題,可以選擇升級復印機固定或者採用FTP傳輸的方式,在這里東莞樂印辦公(www.leyinoa.com)以WIN7系統為例,其他版本的系統大同小異,有些功能可能位置不同,因為大部分都是行業從業人員,具備一定的電腦基礎,不再詳細說明,這里把關鍵點都列舉出來,
1. 開通FTP服務
控制面板-程序和功能-打開和關閉WINDOWS功能-勾選「Internet信息服務」下的所有項目(FTP伺服器、WEB管理工具、萬維網服務),點確定,稍等幾分鍾。
2. 計算機點右鍵-管理-服務和應用程序-INTERNET信息服務(IIS)管理器-網站點右鍵-添加FTP站點。FTP站定名稱:FTP-SCAN,物理路徑選中你要存放掃描的文件夾,IP地址輸入本機的IP地址,SSL選擇無,身份驗證選擇匿名,允許訪問選擇所有用戶,許可權勾選讀取和寫入。完成之後先新建一個名為scan 的計算機用戶,密碼設置為scan123。

3.選中FTP站點,點擊右邊的「基本設置」出現以下對話框,連接為需要輸入2步驟新建的用戶和密碼,測試設置中身份認證和授權兩個都通過才可以

4.FTP服務已經創建完了,在網頁上登錄列印的IP地址,進入地址簿管理,新建一個地址簿,協議選擇FTP,伺服器名稱就是剛才建FTP時輸入的IP地址,路徑為空,登錄用戶名稱為匿名賬號:anonymous 密碼為空。登記完畢,測試掃描OK。

2. 編寫一個簡單的FTP客戶機程序,要求能夠向FTP伺服器發送命令,並接收FTP伺服器返回的響應與數據. 謝謝了~

點量Http/FTP組件的功能簡介:

標准Http和FTP下載支持:完全標準的Http和FTP協議支持,內部通過網址自動區分是Http還是FTP下載。
極速下載(2.0以後版本):超越國內絕大多數下載軟體的下載速度。新版內核在2M ADSL的環境下下載,有些文件的速度可以達到1400K位元組/秒以上,超過了帶寬的極限。下載速度可以用極速形容。
多線程傳輸:可以將文件自動分塊,並採用多線程下載。並可自由設置線程數目。
斷點續傳:點量Http/FTP有優秀的斷點續傳支持,每次啟動自動從上次下載的位置開始,不需要重復下載。
提供詳細的下載詳情介面(2.0以後版本):可以看到整個下載過程的步驟,比如開啟了多少線程、伺服器的應答過程、錯誤信息等。
支持多種高級設置:設置線程數目、磁碟緩存大小、搜索鏡像伺服器的詳細參數設置、下載文件完成後同步文件為伺服器上的文件時間、下載過程中可以自定義文件臨時後綴、未完成的文件設為隱藏屬性。
支持磁碟緩存:點量Http/FTP下載DLL支持設置磁碟緩存,減少對磁碟的讀寫,並提升下載速度。
支持設置Refer:點量Http/FTP下載組件支持設置下載時的Refer,以便可以繞過一些防盜鏈的網站,直接下載內容。
限速功能:點量Http/FTP下載組件可方便的設置下載限速。
多種磁碟分配方式:點量Http/FTP下載組件支持預分配和邊下載邊分配兩種磁碟方式,滿足多種下載需求。
自動搜索鏡像加速:點量Http/FTP內置了鏡像搜索功能,在下載文件的同時,會自動搜索哪些其它網站還有這個文件,自動從其它網址下載加速。
可提供源碼:支付一定的費用,便可以獲得全部的點量Http/FTP下載組件的源代碼,免除您的所有後顧之憂。
良好的服務:作為點量軟體旗下的軟體,可享受到點量軟體的優秀服務,我們的服務讓您如同擁有一個稱心的專業員工。

點量Http/FTP 下載組件可以適用於任何Http和FTP下載的領域,讓您可以在1天內完成一個完整的Http下載軟體的全部功能。比如,您可以用於產品的升級、文件的下載和傳輸等。

3. 求用java寫一個ftp伺服器客戶端程序。

import java.io.*;
import java.net.*;public class ftpServer extends Thread{ public static void main(String args[]){
String initDir;
initDir = "D:/Ftp";
ServerSocket server;
Socket socket;
String s;
String user;
String password;
user = "root";
password = "123456";
try{
System.out.println("MYFTP伺服器啟動....");
System.out.println("正在等待連接....");
//監聽21號埠
server = new ServerSocket(21);
socket = server.accept();
System.out.println("連接成功");
System.out.println("**********************************");
System.out.println("");

InputStream in =socket.getInputStream();
OutputStream out = socket.getOutputStream();

DataInputStream din = new DataInputStream(in);
DataOutputStream dout=new DataOutputStream(out);
System.out.println("請等待驗證客戶信息....");

while(true){
s = din.readUTF();
if(s.trim().equals("LOGIN "+user)){
s = "請輸入密碼:";
dout.writeUTF(s);
s = din.readUTF();
if(s.trim().equals(password)){
s = "連接成功。";
dout.writeUTF(s);
break;
}
else{s ="密碼錯誤,請重新輸入用戶名:";<br> dout.writeUTF(s);<br> <br> }
}
else{
s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";
dout.writeUTF(s);
}
}
System.out.println("驗證客戶信息完畢...."); while(true){
System.out.println("");
System.out.println("");
s = din.readUTF();
if(s.trim().equals("DIR")){
String output = "";
File file = new File(initDir);
String[] dirStructure = new String[10];
dirStructure= file.list();
for(int i=0;i<dirStructure.length;i++){
output +=dirStructure[i]+"\n";
}
s=output;
dout.writeUTF(s);
}
else if(s.startsWith("GET")){
s = s.substring(3);
s = s.trim();
File file = new File(initDir);
String[] dirStructure = new String[10];
dirStructure= file.list();
String e= s;
int i=0;
s ="不存在";
while(true){
if(e.equals(dirStructure[i])){
s="存在";
dout.writeUTF(s);
RandomAccessFile outFile = new RandomAccessFile(initDir+"/"+e,"r");
byte byteBuffer[]= new byte[1024];
int amount;
while((amount = outFile.read(byteBuffer)) != -1){
dout.write(byteBuffer, 0, amount);break;
}break;

}
else if(i<dirStructure.length-1){
i++;
}
else{
dout.writeUTF(s);
break;
}
}
}
else if(s.startsWith("PUT")){
s = s.substring(3);
s = s.trim();
RandomAccessFile inFile = new RandomAccessFile(initDir+"/"+s,"rw");
byte byteBuffer[] = new byte[1024];
int amount;
while((amount =din.read(byteBuffer) )!= -1){
inFile.write(byteBuffer, 0, amount);break;
}
}
else if(s.trim().equals("BYE"))break;
else{
s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";
dout.writeUTF(s);
}
}

din.close();
dout.close();
in.close();
out.close();
socket.close();
}
catch(Exception e){
System.out.println("MYFTP關閉!"+e);

}
}}

4. 用C語言寫一個FTP的客戶端程序,需要了解哪些知識

一、需要的知識點:
1、SOCKET技術,網路編程的基本功能
2、FTP
3、如果需要自己寫,可能需要熟悉各個網路框架
二、編寫FTP所需要掌握的框架
1、wininet
2、libcurl

5. 給出一個C++或Java編寫的ftp伺服器程序

給你一個MFC寫的:
// FtpClient.h: interface for the CFtpServer class.
//

#if !defined(_FTPCLIENT_H)
#define _FTPCLIENT_H

#include <afxinet.h>

class CFtpClient
{
//構造/析構函數
public:

CFtpClient(const char *pszFtpIp, const char *pszFtpPort, const char *pszFtpUser, const char *pszFtpPassWord);
//功能:構造函數
//參數:pszFtpIp---------Ftp伺服器IP地址
// pszFtpPort-------Ftp伺服器埠
// pszFtpUser-------Ftp用戶名
// pszFtpPassWord---Ftp用戶密碼
//返回值:無

virtual ~CFtpClient();
//功能:析構函數
//參數:無
//返回值:無

//公有成員函數
public:

BOOL ConnectFtpServer();
//功能:連接FTP伺服器
//參數:無
//返回值:TRUE--連接成功,FALSE--連接失敗

void DisConnectFtpServer();
//功能:斷開與FTP伺服器的連接
//參數:無
//返回值:無

BOOL PutFileToFtpServer(const char *pszFilePath);
//功能:上傳指定的文件到FTP伺服器
//參數:要上傳的文件名
//返回值:TRUE--連接成功,FALSE--連接失敗

BOOL GetFileFromFtpServer(const char *pszFilePath);
//功能:從FTP伺服器下載指定文件
//參數:要下載的文件名
//返回值:TRUE--連接成功,FALSE--連接失敗

CString GetUpLoadFilePath();
//功能:得到上傳文件名
//參數:無
//返回值:得到的當前路徑

//私有成員變數
private:
char m_szFtpIp[20]; //Ftp伺服器IP地址
UINT m_uFtpPort; //Ftp伺服器埠
char m_szFtpUser[20]; //Ftp用戶名
char m_szFtpPassWord[20]; //Ftp用戶密碼

CInternetSession *m_pInetSession; //Internet會話對象指針
CFtpConnection *m_pFtpConnection; //FTP服務連接對象指針
};

#endif

// FtpClient.cpp: implementation of the CFtpServer class.
//

#include "FtpClient.h"

CFtpClient::CFtpClient(const char *pszFtpIp, const char *pszFtpPort, const char *pszFtpUser,const char *pszFtpPassWord)
{
strcpy(m_szFtpIp, pszFtpIp);
m_uFtpPort = atoi(pszFtpPort);
strcpy(m_szFtpUser, pszFtpUser);
strcpy(m_szFtpPassWord, pszFtpPassWord);

m_pInetSession = NULL;
m_pFtpConnection = NULL;
}

CFtpClient::~CFtpClient()
{

}

BOOL CFtpClient::ConnectFtpServer()
{
//創建Internet會話
m_pInetSession = new CInternetSession(AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS);

try
{
//連接Ftp伺服器
m_pFtpConnection = m_pInetSession->GetFtpConnection(m_szFtpIp, m_szFtpUser, m_szFtpPassWord, m_uFtpPort);
}
catch(CInternetException *pEx)
{
char szError[1024];
pEx->GetErrorMessage(szError, 1024);
pEx->Delete();

CLog Log;
Log.RecordLog("連接Ftp伺服器", CString("9999"), CString(szError));

return FALSE;
}

return TRUE;
}

void CFtpClient::DisConnectFtpServer()
{
if(m_pFtpConnection != NULL)
{
m_pFtpConnection->Close();
delete m_pFtpConnection;
m_pFtpConnection = NULL;
}

if(m_pInetSession !=NULL)
{
m_pInetSession->Close();
delete m_pInetSession;
m_pInetSession = NULL;
}
}

BOOL CFtpClient::PutFileToFtpServer(const char *pszFilePath)
{
//1. 判斷伺服器是否連接
if(m_pFtpConnection == NULL)
{
return FALSE;
}

char szLocalFile[200] = {0};
char szRemoteFile[200] = {0};

//2. 本地文件名
sprintf(szLocalFile, "%s", pszFilePath);

//3. 遠程文件名
char szDrive[10] = {0};
char szDir[210] = {0};
char szFileName[70] = {0};
char szExt[10] = {0};

_splitpath(pszFilePath, szDrive, szDir, szFileName, szExt);
sprintf(szRemoteFile, "%s\\%s.%s", g_strEnterpriseID, szFileName, szExt);

//4. 文件上傳
if(!m_pFtpConnection->PutFile(szLocalFile, szRemoteFile))
{
return FALSE;
}

return TRUE;
}

BOOL CFtpClient::GetFileFromFtpServer(const char *pszFilePath)
{
//1. 判斷伺服器是否連接
if(m_pFtpConnection == NULL)
{
return FALSE;
}

char szLocalFile[200] = {0};
char szRemoteFile[200] = {0};

//2. 本地文件名
sprintf(szLocalFile,"%s",pszFilePath);

//3. 遠程文件名
char szDrive[10] = {0};
char szDir[210] = {0};
char szFileName[70] = {0};
char szExt[10] = {0};

_splitpath(pszFilePath, szDrive, szDir, szFileName, szExt);
sprintf(szRemoteFile, "%s\\%s.%s", g_strEnterpriseID, szFileName, szExt);

//4. 文件下載
if(!m_pFtpConnection->GetFile(szRemoteFile, szLocalFile))
{
return FALSE;
}

return TRUE;
}

CString CFtpClient::GetUpLoadFilePath()
{
CString strPath = "", strDir = "";

//得到當前日期
CTime time = CTime::GetCurrentTime();
CString strDate = time.Format("%Y%m%d");

//得到上傳文件路徑
char filepath[MAX_PATH];
GetMoleFileName(NULL, filepath, MAX_PATH);
strDir.Format("%s", filepath);
strPath = strDir.Left(strDir.ReverseFind('\\')) + strDate + "\\*.txt";

return strPath;
}
//保存成兩個文件,然後添加到你的工程中就可以調用了。

6. 一、 編寫一個簡易的FTP客戶端程序,要求能夠通過用戶名,密碼以及URL地址瀏覽和下載FTP伺服器上的資源。

java界面?純java程序嗎,還是jsp。純java程序的話,需要引入java.net.url包。
try{getAppletContext().showDocument(new URL("http://www.163.com"),"打開位置");}
catch(Exception ex) {System.out.println("error"); }
就超鏈接了。
FTP連接可以寫為如 ftp://用戶名:密碼@163.com

7. 求MFC編寫的FTP伺服器和客戶端程序

我這有一個以前自學用的例子,你看看需要不?

運行程序,打開程序主界面,如圖1.1所示。輸入FTP伺服器IP地址、伺服器埠、用戶名及密碼,單擊「快速登錄」按鈕,連接FTP伺服器。連接成功後,設置下載文件存儲目錄,然後就可以上傳及下載文件了。下載文件過程中,可以暫停及刪除下載任務。

圖1.1 FTP文件上傳下載模塊主窗口

在「功能選項」菜單下選擇「下載後關機」命令,文件下載完成後,自動關閉計算機。

8. 給出一個C++或Java編寫的ftp伺服器程序

Socket TCP
反射API介紹

4.Java Socket編程 TCP 協議編程
1) TCP工作模型: 先找
堂(主機/IP), 到食堂以後找窗口
(Socket/套接字 埠號), 服務員等待連接,客戶向服務仔知兆員發起連接
連接以後, 一個窗口可以為每個客戶安排一個服務員(線程)提供服務,
每個服務過程可以雙向交流通訊(流), 通訊完成後要關閉連接.
5. TCP 服務端編程(食堂)(java.io.*,java.net.*,java.lang.*)
1) 創建ServerSocket實例綁定一個服務埠(Socket/套接字 埠號)
2) 開始ServerSocket實例 的監聽, 等待客戶端的連接
3) 如果有客戶連接進來, 就獲得了客戶的套接字(Socket)實例
客戶的套接字(Socket)實例中包念租括與客戶端建立的連接流
4) 為這個客戶(Socket) 創建一個服務線程, 提供服務(run方法)
5) 繼續等待下一個連接, 返回到2)
6) 服務線程 完成通訊服務過程

7) 埠號: 0~65535, 1K以下留給系統使用

6. TCP 客戶端編程
1) 創建Socket 實例, 連接到伺服器端, 成功創建猛賀s就表示連接到了
伺服器
Socket s = new Socket("host", port)
2) 客戶端 Socket 與伺服器端 Socket 對應, 都包含輸入, 輸出流
客戶端的s.getInputStream() 連接於伺服器s.getOutputStream()
客戶端的s.getOutputStream()連接於伺服器s.getInputStream()
3) 使用線程處理 網路流

7. Java 反射
1) 反射是Java自我管理(類, 對象)的機制
2) * 可以通過反射機制發現對象的類型 發現類型的方法/屬性/構造器
3) * Java 反射 可以創建對象 並 訪問任意對象方法和屬性等
4) Class 載入
類載入到內存: java 將磁碟類文件載入到內存中,為一個對象(實例)
這個對象是Class的實例, 也就是 這些對象都是Class實例
5)Class 實例代表Java中類型, 基本類型的類型: int.class, long.class
類類型 Class 實例獲得如下:
Class cls = String.class;
Class cls = Class.forName("java.lang.String");
Class cls = "abc".getClass();
以上方法獲得cls 是同一個對象, 就是String 類內存載入的結果

package javase2.day06.ftp;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
/**
* ftp 客戶端 可以使用命令 ls pwd get
*/
public class FtpClient {
public static void main(String[] args)
throws IOException{
FtpClient client = new FtpClient();
client.open();
}
public void open() throws IOException{
Socket s = new Socket("localhost", 9000);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
//處理客戶端對伺服器的請求
new RequestProcess(out).start();
//處理伺服器的反饋信息
new ResponseProcess(in).start();
}
//處理客戶端對伺服器的請求
class RequestProcess extends Thread{
OutputStream out;
public RequestProcess(OutputStream out) {
this.out = out;
}
public void run() {
try{
Scanner sc = new Scanner(System.in);
while(true){
String s = sc.nextLine();
IOUtils.println(out, s);
if(s.equals("bye")){
System.exit(0);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
class ResponseProcess extends Thread{
InputStream in;
public ResponseProcess(InputStream in) {
this.in = in;
}
public void run() {
try{
while(true){
String header = IOUtils.readLine(in);
if(header.startsWith("text,")){
show(header,in);
}else if(header.startsWith("file,")){
save(header, in);
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
public void show(String header, InputStream in)
throws IOException {
int n = Integer.parseInt(header.split(",")[1]);
for(int i=0; i<n; i++){
String s = IOUtils.readLine(in);
System.out.println(s);
}
}
public void save(String header, InputStream in)
throws IOException{
File dir = new File("ftp");
if(!dir.exists()){
dir.mkdir();
}
//header: file,10,filename
String[] data = header.split(",");
long length = Long.parseLong(data[1]);
String filename = data[2];
File file = new File(dir, filename);
BufferedOutputStream out =
new BufferedOutputStream(
new FileOutputStream(file));
for(long i=0; i<length; i++){
int b = in.read();
out.write(b);
}
out.close();
}

}

package javase2.day06.ftp;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 模擬FTP伺服器, 支持命令pwd,ls,get file
*
* 協議: type,length,value TLV格式
*
* 文本: text,5\nline1\nline2\nline3\nline4\nline5\n
* 文件: file,4,filename\n 41 42 43 44
*
* text,5\nline1\nline2\nline3\nline4\nline5\nfile,4,filename\n 41 42 43 44
*/
public class FtpServer {
public static void main(String[] args)
throws IOException{
FtpServer server = new FtpServer();
server.start();
}

public void start() throws IOException{
ServerSocket ss = new ServerSocket(9000);
while(true){
Socket s = ss.accept();
new Agent(s).start();
}
}
class Agent extends Thread{
Socket s;
public Agent(Socket s) {
this.s = s;
}
public void run() {
try{
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
//向客戶端發送, 先發協議頭,再發送文本行
out.write("text,1\n".getBytes());//協議頭
//發送消息內容, 一行文本消息
out.write("歡迎使用FTP演示伺服器!\n".getBytes());
out.flush();
while(true){
//讀取客戶端發送到命令
String cmd = IOUtils.readLine(in).trim();
if("pwd".equals(cmd)){//顯示當前目錄
pwd(out);
}else if("ls".equals(cmd)){
ls(out);
}else if(cmd.startsWith("get ")){
get(cmd, out);
}else if("bye".equalsIgnoreCase(cmd)){
IOUtils.println(out, "text,1");
IOUtils.println(out, "Bye, Bye!");
s.close();
}else{
out.write("text,1\n".getBytes());//協議頭
out.write("只支持pwd,ls,get,bye!\n".getBytes());
out.flush();
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
public void pwd(OutputStream out)
throws IOException{
File dir = new File(".");
IOUtils.println(out, "text,1");
IOUtils.println(out, dir.getCanonicalPath());
}
public void ls(OutputStream out)
throws IOException{
File dir = new File(".");
File[] files = dir.listFiles();
IOUtils.println(out, "text,"+files.length);
for (File f : files) {
if(f.isDirectory()){
IOUtils.println(out, "["+f.getName()+"]");
}else{
IOUtils.println(out, f.getName());
}
}
}
public void get(String cmd, OutputStream out)
throws IOException{
//cmd="get filename"
String name = cmd.split("\\s+")[1];
File file = new File(name);
if(! file.exists()){
IOUtils.println(out, "text,1");
IOUtils.println(out, "沒有文件呀!"+name);
return;
}
//文件協議頭:
IOUtils.println(out,
"file,"+file.length()+","+name);
FileInputStream in =
new FileInputStream(file);
IOUtils.cp(in, out);
out.flush();
in.close();
IOUtils.println(out, "text,1");
IOUtils.println(out, "發送成功:"+name);
}
}

9. 如何在win10系統搭建ftp服務

FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為「文傳協議」。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。


Windows10設置FTP步驟大致如下:

  1. 右鍵開始菜單中選擇」控制面板「,進入控制面板;

  2. 在控制面板中選擇」程序「,進入程序設置界面;

  3. 在程序界面中的「程序和功能」中,點擊選擇「啟用或關閉Windows功能」,彈出「Windows功能」框;

  4. 找到「Internet Information Services 」項,將「Internet Information Services 」項中的FTP伺服器、Web伺服器、萬維網服務等所有功能前的框勾上,點擊確定,Windows將自動配置相關功能;

  5. 系統配置完成後,依次打開控制面板,選擇「系統和安全」,進入「系統和安全」界面後找到並打開「管理工具」;

  6. 在管理工具界面,點擊打開「Internet Information Services (IIS)管理器」,進入(IIS)管理器後,在左欄的「網站」上點擊右鍵,選擇「添加FTP站點;

  7. 在「添加FTP站點」界面填寫ftp站點名稱,及物理路徑等信息,點擊下一步;

  8. 設置IP地址及SSL等,(一般SSL選擇「無SSL」)單擊下一步;

  9. 設置FTP身份驗證及授權信息,點擊完成即可FTP伺服器的設置。

熱點內容
洛奇合成腳本 發布:2025-02-08 22:57:04 瀏覽:141
linux文件軟鏈接 發布:2025-02-08 22:35:48 瀏覽:773
iphone6s緩存怎麼清理 發布:2025-02-08 22:33:17 瀏覽:928
資料庫系統設計的步驟 發布:2025-02-08 22:11:19 瀏覽:44
processc語言 發布:2025-02-08 22:11:15 瀏覽:537
國產車配置為什麼這么便宜 發布:2025-02-08 22:09:52 瀏覽:481
伺服器為什麼需要專線 發布:2025-02-08 22:07:27 瀏覽:872
java正則表達式正則替換 發布:2025-02-08 22:01:04 瀏覽:506
伺服器不識別配置的ip地址 發布:2025-02-08 22:00:02 瀏覽:615
橙雲伺服器 發布:2025-02-08 21:59:48 瀏覽:438