久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FTP 客户端C实现

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FTP 客户端C实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 Socket 通信實現 FTP 客戶端程序

FTP 概述

文件傳輸協議(FTP)作為網絡共享文件的傳輸協議,在網絡應用軟件中具有廣泛的應用。FTP的目標是提高文件的共享性和可靠高效地傳送數據。

在傳輸文件時,FTP 客戶端程序先與服務器建立連接,然后向服務器發送命令。服務器收到命令后給予響應,并執行命令。FTP 協議與操作系統無關,任何操作系統上的程序只要符合 FTP 協議,就可以相互傳輸數據。本文主要基于 LINUX 平臺,對 FTP 客戶端的實現原理進行詳盡的解釋并闡述如何使用 C 語言編寫一個簡單的 FTP 客戶端。

FTP 協議

相比其他協議,如 HTTP 協議,FTP 協議要復雜一些。與一般的 C/S 應用不同點在于一般的C/S 應用程序一般只會建立一個 Socket 連接,這個連接同時處理服務器端和客戶端的連接命令和數據傳輸。而FTP協議中將命令與數據分開傳送的方法提高了效率。

FTP 使用 2 個端口,一個數據端口和一個命令端口(也叫做控制端口)。這兩個端口一般是21 (命令端口)和 20 (數據端口)。控制 Socket 用來傳送命令,數據 Socket 是用于傳送數據。每一個 FTP 命令發送之后,FTP 服務器都會返回一個字符串,其中包括一個響應代碼和一些說明信息。其中的返回碼主要是用于判斷命令是否被成功執行了。

命令端口

一般來說,客戶端有一個 Socket 用來連接 FTP 服務器的相關端口,它負責 FTP 命令的發送和接收返回的響應信息。一些操作如“登錄”、“改變目錄”、“刪除文件”,依靠這個連接發送命令就可完成。

數據端口

對于有數據傳輸的操作,主要是顯示目錄列表,上傳、下載文件,我們需要依靠另一個 Socket來完成。

如果使用被動模式,通常服務器端會返回一個端口號。客戶端需要用另開一個 Socket 來連接這個端口,然后我們可根據操作來發送命令,數據會通過新開的一個端口傳輸。

如果使用主動模式,通常客戶端會發送一個端口號給服務器端,并在這個端口監聽。服務器需要連接到客戶端開啟的這個數據端口,并進行數據的傳輸。

下面對 FTP 的主動模式和被動模式做一個簡單的介紹。

主動模式 (PORT)

主動模式下,客戶端隨機打開一個大于 1024 的端口向服務器的命令端口 P,即 21 端口,發起連接,同時開放N +1 端口監聽,并向服務器發出 “port N+1” 命令,由服務器從它自己的數據端口 (20) 主動連接到客戶端指定的數據端口 (N+1)。

FTP 的客戶端只是告訴服務器自己的端口號,讓服務器來連接客戶端指定的端口。對于客戶端的防火墻來說,這是從外部到內部的連接,可能會被阻塞。

被動模式 (PASV)

為了解決服務器發起到客戶的連接問題,有了另一種 FTP 連接方式,即被動方式。命令連接和數據連接都由客戶端發起,這樣就解決了從服務器到客戶端的數據端口的連接被防火墻過濾的問題。

被動模式下,當開啟一個 FTP 連接時,客戶端打開兩個任意的本地端口 (N > 1024 和 N+1) 。

第一個端口連接服務器的 21 端口,提交 PASV 命令。然后,服務器會開啟一個任意的端口 (P > 1024 ),返回如“227 entering passive mode (127,0,0,1,4,18)”。 它返回了 227 開頭的信息,在括號中有以逗號隔開的六個數字,前四個指服務器的地址,最后兩個,將倒數第二個乘 256 再加上最后一個數字,這就是 FTP 服務器開放的用來進行數據傳輸的端口。如得到 227 entering passive mode (h1,h2,h3,h4,p1,p2),那么端口號是 p1*256+p2,ip 地址為h1.h2.h3.h4。這意味著在服務器上有一個端口被開放。客戶端收到命令取得端口號之后, 會通過 N+1 號端口連接服務器的端口 P,然后在兩個端口之間進行數據傳輸。

主要用到的 FTP 命令

FTP 每個命令都有 3 到 4 個字母組成,命令后面跟參數,用空格分開。每個命令都以 "\r\n"結束。

要下載或上傳一個文件,首先要登入 FTP 服務器,然后發送命令,最后退出。這個過程中,主要用到的命令有 USER、PASS、SIZE、REST、CWD、RETR、PASV、PORT、QUIT。

USER: 指定用戶名。通常是控制連接后第一個發出的命令。“USER gaoleyi\r\n”: 用戶名為gaoleyi 登錄。

PASS: 指定用戶密碼。該命令緊跟 USER 命令后。“PASS gaoleyi\r\n”:密碼為 gaoleyi。

SIZE: 從服務器上返回指定文件的大小。“SIZE file.txt\r\n”:如果 file.txt 文件存在,則返回該文件的大小。

CWD: 改變工作目錄。如:“CWD dirname\r\n”。

PASV: 讓服務器在數據端口監聽,進入被動模式。如:“PASV\r\n”。

PORT: 告訴 FTP 服務器客戶端監聽的端口號,讓 FTP 服務器采用主動模式連接客戶端。如:“PORT h1,h2,h3,h4,p1,p2”。

RETR: 下載文件。“RETR file.txt \r\n”:下載文件 file.txt。

STOR: 上傳文件。“STOR file.txt\r\n”:上傳文件 file.txt。

REST: 該命令并不傳送文件,而是略過指定點后的數據。此命令后應該跟其它要求文件傳輸的 FTP 命令。“REST 100\r\n”:重新指定文件傳送的偏移量為 100 字節。

QUIT: 關閉與服務器的連接。

FTP 響應碼

客戶端發送 FTP 命令后,服務器返回響應碼。

響應碼用三位數字編碼表示:

第一個數字給出了命令狀態的一般性指示,比如響應成功、失敗或不完整。

第二個數字是響應類型的分類,如 2 代表跟連接有關的響應,3 代表用戶認證。

第三個數字提供了更加詳細的信息。

第一個數字的含義如下:

1 表示服務器正確接收信息,還未處理。

2 表示服務器已經正確處理信息。

3 表示服務器正確接收信息,正在處理。

4 表示信息暫時錯誤。

5 表示信息永久錯誤。

第二個數字的含義如下:

0 表示語法。

1 表示系統狀態和信息。

2 表示連接狀態。

3 表示與用戶認證有關的信息。

4 表示未定義。

5 表示與文件系統有關的信息。

Socket 編程的幾個重要步驟

Socket 客戶端編程主要步驟如下:

  • socket() 創建一個 Socket
  • connect() 與服務器連接
  • write() 和 read() 進行會話
  • close() 關閉 Socket
  • Socket 服務器端編程主要步驟如下:

  • socket() 創建一個 Socket
  • bind()
  • listen() 監聽
  • accept() 接收連接的請求
  • write() 和 read() 進行會話
  • close() 關閉 Socket
  • 實現 FTP 客戶端上傳下載功能

    下面讓我們通過一個例子來對 FTP 客戶端有一個深入的了解。本文實現的 FTP 客戶端有下列功能:

  • 客戶端和 FTP 服務器建立 Socket 連接。
  • 向服務器發送 USER、PASS 命令登錄 FTP 服務器。
  • 使用 PASV 命令得到服務器監聽的端口號,建立數據連接。
  • 使用 RETR/STOR 命令下載/上傳文件。
  • 在下載完畢后斷開數據連接并發送 QUIT 命令退出。
  • 本例中使用的 FTP 服務器為 filezilla。在整個交互的過程中,控制連接始終處于連接的狀態,數據連接在每傳輸一個文件時先打開,后關閉。

    客戶端和 FTP 服務器建立 Socket 連接

    當客戶端與服務器建立連接后,服務器會返回 220 的響應碼和一些歡迎信息。

    圖 1. 客戶端連接到服務器端

    清單 1. 客戶端連接到 FTP 服務器,接收歡迎信息

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    SOCKET control_sock;

    struct hostent *hp;

    struct sockaddr_in server;

    memset(&server, 0, sizeof(struct sockaddr_in));

    ?

    /* 初始化socket */

    control_sock = socket(AF_INET, SOCK_STREAM, 0);

    hp = gethostbyname(server_name);

    memcpy(&server.sin_addr, hp->h_addr, hp->h_length);

    server.sin_family = AF_INET;

    server.sin_port = htons(port);

    ?

    /* 連接到服務器端 */

    connect(control_sock,(struct sockaddr *)&server, sizeof(server));

    /* 客戶端接收服務器端的一些歡迎信息 */

    read(control_sock, read_buf, read_len);

    客戶端登錄 FTP 服務器

    當客戶端發送用戶名和密碼,服務器驗證通過后,會返回 230 的響應碼。然后客戶端就可以向服務器端發送命令了。

    圖 2. 客戶端登錄 FTP 服務器

    清單 2. 客戶端發送用戶名和密碼,登入 FTP 服務器

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    /* 命令 ”USER username\r\n” */

    sprintf(send_buf,"USER %s\r\n",username);

    /*客戶端發送用戶名到服務器端 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”331 User name okay, need password.” */

    read(control_sock, read_buf, read_len);

    ?

    /* 命令 ”PASS password\r\n” */

    sprintf(send_buf,"PASS %s\r\n",password);

    /* 客戶端發送密碼到服務器端 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”230 User logged in, proceed.” */

    read(control_sock, read_buf, read_len);

    客戶端讓 FTP 服務器進入被動模式

    當客戶端在下載/上傳文件前,要先發送命令讓服務器進入被動模式。服務器會打開數據端口并監聽。并返回響應碼 227 和數據連接的端口號。

    圖 3. 客戶端讓服務器進入被動模式

    清單 3. 讓服務器進入被動模式,在數據端口監聽

    1

    2

    3

    4

    5

    6

    7

    /* 命令 ”PASV\r\n” */

    sprintf(send_buf,"PASV\r\n");

    /* 客戶端告訴服務器用被動模式 */

    write(control_sock, send_buf, strlen(send_buf));

    /*客戶端接收服務器的響應碼和新開的端口號,

    * 正常為 ”227 Entering passive mode (<h1,h2,h3,h4,p1,p2>)” */

    read(control_sock, read_buf, read_len);

    客戶端通過被動模式下載文件

    當客戶端發送命令下載文件。服務器會返回響應碼 150,并向數據連接發送文件內容。

    圖 4. 客戶端從FTP服務器端下載文件

    清單 4. 客戶端連接到 FTP 服務器的數據端口并下載文件

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    /* 連接服務器新開的數據端口 */

    connect(data_sock,(struct sockaddr *)&server, sizeof(server));

    /* 命令 ”CWD dirname\r\n” */

    sprintf(send_buf,"CWD %s\r\n", dirname);

    /* 客戶端發送命令改變工作目錄 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”250 Command okay.” */

    read(control_sock, read_buf, read_len);

    ?

    /* 命令 ”SIZE filename\r\n” */

    sprintf(send_buf,"SIZE %s\r\n",filename);

    /* 客戶端發送命令從服務器端得到下載文件的大小 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”213 <size>” */

    read(control_sock, read_buf, read_len);

    ?

    /* 命令 ”RETR filename\r\n” */

    sprintf(send_buf,"RETR %s\r\n",filename);

    /* 客戶端發送命令從服務器端下載文件 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”150 Opening data connection.” */

    read(control_sock, read_buf, read_len);

    ?

    /* 客戶端創建文件 */

    file_handle = open(disk_name, CRFLAGS, RWXALL);

    for( ; ; ) {

    ... ...

    /* 客戶端通過數據連接 從服務器接收文件內容 */

    read(data_sock, read_buf, read_len);

    /* 客戶端寫文件 */

    write(file_handle, read_buf, read_len);

    ... ...

    }

    /* 客戶端關閉文件 */

    rc = close(file_handle);

    客戶端退出服務器

    當客戶端下載完畢后,發送命令退出服務器,并關閉連接。服務器會返回響應碼 200。

    圖 5. 客戶端從 FTP 服務器退出

    清單 5. 客戶端關閉數據連接,退出 FTP 服務器并關閉控制連接

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    /* 客戶端關閉數據連接 */

    close(data_sock);

    /* 客戶端接收服務器的響應碼和信息,正常為 ”226 Transfer complete.” */

    read(control_sock, read_buf, read_len);

    ?

    /* 命令 ”QUIT\r\n” */

    sprintf(send_buf,"QUIT\r\n");

    /* 客戶端將斷開與服務器端的連接 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼,正常為 ”200 Closes connection.” */

    read(control_sock, read_buf, read_len);

    /* 客戶端關閉控制連接 */

    close(control_sock);

    至此,下載文件已經完成。需要注意的是發送 FTP 命令的時候,在命令后要緊跟 “\r\n”,否則服務器不會返回信息。回車換行符號 “\r\n” 是 FTP 命令的結尾符號,當服務器接收到這個符號時,認為客戶端發送的命令已經結束,開始處理。否則會繼續等待。

    讓我們來看一下 FTP 服務器這一端的響應情況:

    清單 6. 客戶端下載文件時,FTP 服務器的響應輸出

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    (not logged in) (127.0.0.1)> Connected, sending welcome message...

    (not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.36 beta

    (not logged in) (127.0.0.1)> 220 hello gaoleyi

    (not logged in) (127.0.0.1)> USER gaoleyi

    (not logged in) (127.0.0.1)> 331 Password required for gaoleyi

    (not logged in) (127.0.0.1)> PASS *********

    gaoleyi (127.0.0.1)> 230 Logged on

    gaoleyi (127.0.0.1)> PWD

    gaoleyi (127.0.0.1)> 257 "/" is current directory.

    gaoleyi (127.0.0.1)> SIZE file.txt

    gaoleyi (127.0.0.1)> 213 4096

    gaoleyi (127.0.0.1)> PASV

    gaoleyi (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,13,67)

    gaoleyi (127.0.0.1)> RETR file.txt

    gaoleyi (127.0.0.1)> 150 Connection accepted

    gaoleyi (127.0.0.1)> 226 Transfer OK

    gaoleyi (127.0.0.1)> QUIT

    gaoleyi (127.0.0.1)> 221 Goodbye

    首先,服務器準備就緒后返回 220。客戶端接收到服務器端返回的響應碼后,相繼發送“USER username” 和 “PASS password” 命令登錄。隨后,服務器返回的響應碼為 230 開頭,說明客戶端已經登入了。這時,客戶端發送 PASV 命令讓服務器進入被動模式。服務器返回如 “227 Entering Passive Mode (127,0,0,1,13,67)”,客戶端從中得到端口號,然后連接到服務器的數據端口。接下來,客戶端發送下載命令,服務器會返回響應碼 150,并從數據端口發送數據。最后,服務器返回 “226 transfer complete”,表明數據傳輸完成。

    需要注意的是,客戶端不要一次發送多條命令,例如我們要打開一個目錄并且顯示這個目錄,我們得發送 CWD dirname,PASV,LIST。在發送完 CWD dirname 之后等待響應代碼,然后再發送后面一條。當 PASV 返回之后,我們打開另一個 Socket 連接到相關端口上。然后發送 LIST,返回 125 之后在開始接收數據,最后返回 226 表明完成。

    在傳輸多個文件的過程中,需要注意的是每次新的傳輸都必須重新使用 PASV 獲取新的端口號,接收完數據后應該關閉該數據連接,這樣服務器才會返回一個 2XX 成功的響應。然后客戶端可以繼續下一個文件的傳輸。

    上傳文件與下載文件相比,登入驗證和切換被動模式都如出一轍,只需要改變發送到服務器端的命令,并通過數據連接發送文件內容。

    客戶端通過被動模式向服務器上傳文件

    當客戶端發送命令上傳文件,服務器會從數據連接接收文件。

    圖 6. 客戶端連接到 FTP 服務器的數據端口并上傳文件

    客戶端通過主動模式向服務器上傳文件

    到目前為止,本文介紹的都是客戶端用被動模式進行文件的上傳和下載。下面將介紹客戶端用主動模式下載文件。

    圖 7. 用主動模式從 FTP 服務器下載文件

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    清單 7. 用主動模式從 FTP 服務器下載文件的示例 C 程序

    ... ...

    SOCKET data_sock;

    data_sock = socket(AF_INET, SOCK_STREAM, 0);

    struct? sockaddr_in? name;

    name.sin_family = AF_INET;

    name.sin_addr.s_addr = htons(INADDR_ANY);

    server_port = p1*256+p2;

    length = sizeof(name);

    name.sin_port = htons(server_port);

    bind(server_sock, (struct sockaddr *)&name, length);

    struct? sockaddr_in client_name;

    length = sizeof(client_name);

    ?

    /* 客戶端開始監聽端口p1*256+p2 */

    listen(server_sock, 64);

    ?

    /* 命令 ”PORT \r\n” */

    sprintf(send_buf,"PORT 1287,0,0,1,%d,%d\r\n", p1, p2);

    write(control_sock, send_buf,strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”200 Port command successful” */

    read(control_sock, read_buf, read_len);

    ?

    sprintf(send_buf,"RETR filename.txt\r\n");

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,正常為 ”150 Opening data channel for file transfer.” */

    read(control_sock, read_buf, read_len);

    ?

    /* ftp客戶端接受服務器端的連接請求 */

    data_sock = accept(server_sock,(struct sockaddr *)&client_name, &length);

    ... ...

    ?

    file_handle = open(disk_name, ROFLAGS, RWXALL);

    for( ; ; ) {

    ... ...

    read(data_sock, read_buf, read_len);

    write(file_handle, read_buf, read_len);

    ... ...

    }

    close(file_handle);

    客戶端通過 PORT 命令告訴服務器連接自己的 p1*256+p2 端口。隨后在這個端口進行監聽,等待 FTP 服務器連接上來, 再通過這個數據端口來傳輸文件。PORT 方式在傳送數據時,FTP 客戶端其實就相當于一個服務器端,由 FTP 服務器主動連接自己。

    斷點續傳

    由于網絡不穩定,在傳輸文件的過程中,可能會發生連接斷開的情況,這時候需要客戶端支持斷點續傳的功能,下次能夠從上次終止的地方開始接著傳送。需要使用命令 REST。如果在斷開連接前,一個文件已經傳輸了 512 個字節。則斷點續傳開始的位置為 512,服務器會跳過傳輸文件的前 512 字節。

    清單 8. 從 FTP 服務器斷點續傳下載文件

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    ... ...

    /* 命令 ”REST offset\r\n” */

    sprintf(send_buf,"REST %ld\r\n", offset);

    /* 客戶端發送命令指定下載文件的偏移量 */

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,

    *正常為 ”350 Restarting at <position>. Send STORE or RETRIEVE to initiate transfer.” */

    read(control_sock, read_buf, read_len);

    ... ...

    ?

    /* 命令 ”RETR filename\r\n” */

    sprintf(send_buf,"RETR %s\r\n",filename);

    /* 客戶端發送命令從服務器端下載文件, 并且跳過該文件的前offset字節*/

    write(control_sock, send_buf, strlen(send_buf));

    /* 客戶端接收服務器的響應碼和信息,*

    *正常為 ”150 Connection accepted, restarting at offset <position>” */

    read(control_sock, read_buf, read_len);

    ... ...

    ?

    file_handle = open(disk_name, CRFLAGS, RWXALL);

    /* 指向文件寫入的初始位置 */

    lseek(file_handle, offset, SEEK_SET);

    ... ...

    結束語

    本文從應用實現的角度,介紹了 FTP 協議。并用詳盡的例子分析了如何用主動模式和被動模式實現 FTP 客戶端上傳下載文件,如何進行斷點續傳。通過本文可以讓讀者對 FTP 客戶端的原理有一個深入的了解。

    這里借用輕飄飛揚博主的代碼測試通過

    #include<stdio.h> #include<sys/socket.h> #include<stdlib.h> #include<string.h> #include<strings.h> #include<unistd.h> #include<netinet/in.h> #include<netdb.h> #include<errno.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #define SERV_PORT 21 #define MAXSIZE 1024 #define SA struct sockaddr static int control_sockfd; int npsupport; int login_yes; int f;//f=0時為默認文件結構 int login(); void ftp_list(int control_sockfd); void zeromery(char *a,int len); void ftp_pwd(int control_sockfd); void ftp_changdir(char dir[],int control_sockfd); void ftp_quit(int control_sockfd); void ftp_creat_mkd(char *path,int control_sockfd); void ftp_back(int control_sockfd); void ftp_stru(int control_sockfd); void ftp_rest(int control_sockfd); int ftp_download(int control_sockfd); char *itoa(int value, char *string, int radix); int main(int argc,char **argv) {printf("ftp>");char command[MAXSIZE];char*cmd;scanf("%s",command);cmd=command;while(*(cmd)==' ')cmd++;if(strncmp(cmd,"login",5)==0){login();if(login_yes==1){while(1){comm: sleep(1);printf("ftp>");zeromery(command,1024);scanf("%s",command);cmd=command;while(*(cmd)==' ')cmd++;if(strncmp(cmd,"pasv",4)==0){ftp_list(control_sockfd);}if(strncmp(cmd,"port",4)==0){ftp_list(control_sockfd);}if(strncmp(cmd,"list",4)==0){ftp_pwd(control_sockfd);ftp_list(control_sockfd);}if(strncmp(cmd,"pwd",3)==0){ftp_pwd(control_sockfd);}if(strncmp(cmd,"mkdir",5)==0){char path[60];zeromery(path,60);printf("創建的路徑名: ");scanf("%s",path);printf("s/n",path);ftp_creat_mkd(path,control_sockfd);}if(strncmp(cmd,"back",4)==0){ftp_back(control_sockfd);ftp_pwd(control_sockfd);}if(strncmp(cmd,"cd",2)==0){int i;char path[60];zeromery(path,60);printf("要到的路徑:");scanf("%s",path);printf("%s/n",path);ftp_changdir(path,control_sockfd);}if(strncmp(cmd,"get",3)==0){ftp_pwd(control_sockfd); ftp_download(control_sockfd);}if(strncmp(cmd,"up",3)==0){ftp_pwd(control_sockfd);ftp_up(control_sockfd); }if(strncmp(cmd,"quit",4)==0){printf("bye^_^/n");close(control_sockfd);break;}printf("支持 list,pwd,mkdir,back,cd,up,get/n"); }}else if(login_yes==0){ int i;//不成功登錄下最多還有兩次機會,如果不能在兩次登錄,則,關閉鏈接。printf("Can not login vsftpd");for(i=2;i>0;i--){printf("你還有 %d 登錄機會/n",i); login();if(login_yes==1){goto comm;}}if(i==0){printf("你不能在登錄!/n");close(control_sockfd);}}else if (strncmp(cmd,"quit",4)==0){ftp_quit(control_sockfd);close(control_sockfd);}}return 0; } int login() {//初始化端口信息struct sockaddr_in serv_addr;char senddate,recvdate;char sendline[MAXSIZE],recvline[MAXSIZE];struct hostent *host;//獲取hostent中相關參數char name[MAXSIZE],password[MAXSIZE];printf("please enter the hostname/n");printf("ftp-> ");scanf("%s",name);host=gethostbyname(name);if(host==NULL){printf("get host by name is error!/n");login_yes=0;}else{//創建socketcontrol_sockfd=socket(AF_INET,SOCK_STREAM,0);if(control_sockfd<0){printf("socket is error/n");login_yes=0;}//設置sockaddr_in 結構體中的相關參數bzero(&serv_addr,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(SERV_PORT);serv_addr.sin_addr.s_addr=INADDR_ANY;//調用connect函數發起連接char addr[MAXSIZE];if((connect(control_sockfd,(SA*)&serv_addr,sizeof(serv_addr)))<0){printf("connect is error/n");login_yes=0;}printf("connect to %s/n",inet_ntop(AF_INET,host->h_addr,addr,1024));recvdate=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvdate==-1){printf("recvdate is connect error/n");login_yes=0;}else if(strncmp(recvline,"220",3)==0){printf("connect success,pelase enter username/n");login_yes=1;}else {printf("220 connect is error!");login_yes=0; }//ftp用戶登錄主體部分int sendbytes,recvbytes;zeromery(name,1024);zeromery(password,1024);zeromery(recvline,1024);zeromery(sendline,1024);printf("ftp-> ");scanf("%s",name);//可以支持匿名登錄vsftpdstrcat(sendline,"USER ");strcat(sendline,name);strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes==-1){printf("send is wrong/n");login_yes=0;}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"331",3)==0){printf("331 please specify the password./n");}else{printf("recv date is error./n");login_yes=0;}zeromery(sendline,1024);zeromery(recvline,1024);printf("ftp-> ");scanf("%s",password);strcat(sendline,"PASS ");strcat(sendline,password);strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes==-1){printf("pass send is error/n");login_yes=0;}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"230",3)==0){printf("login success!/n");login_yes=1;}else {printf("pass recv is error/n");login_yes=0;}//支持斷點續傳zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"REST ");strcat(sendline,"0");strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes==-1){printf("rest send is error!/n");login_yes=0;}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes==-1){printf("rest recv date is error./n"); login_yes=0; }if(strncmp(recvline,"350 Restart position accepted (0).",34)==0){npsupport=1;printf("support 斷點續傳/n");login_yes=1;}else{npsupport=0;printf("not support 斷點續傳/n");login_yes=0; }//獲取服務器版本信息zeromery(recvline,1024);zeromery(sendline,1024);strcat(sendline,"SYST");strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes==-1){printf("syst send is error/n");login_yes=0;}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes==-1){printf("syst recv is error/n");login_yes=0;}if(strncmp(recvline,"215 UNIX Type: L8",17)==0){printf("%s",recvline);login_yes=1;}else {printf("syst recv connectin is error/n");login_yes=0;} }return login_yes; }//數組初始化 void zeromery(char *a,int len) {int i;len=sizeof(a);for(i=0;i<len;i++){a[i]=0;} }//quit函數,control_sockfd,通過實參傳遞 void ftp_quit(int control_sockfd ) {char sendline[1024];char recvline[1024];int recvbytes;int sendbytes;zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"QUIT");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("quit send is error!/n");exit(1);}recvbytes=recv(control_sockfd,recvline,strlen(recvline),0);if(strncmp(recvline,"221",3)==0){printf("221 bye!^_^");exit(1);}else{printf("quit recv is error!/n");exit(1);} }//mkd,在所在路徑中創建目錄 函數 void ftp_creat_mkd(char *path,int control_sockfd) {char sendline[1024];char recvline[1024];zeromery(sendline,1024);zeromery(recvline,1024);int recvbytes,sendbytes;int issuccess;strcat(sendline,"MKD ");strcat(sendline,path);strcat(sendline,"/r/n");printf("%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("mkd send is error!");exit(1);}recvbytes=recv(control_sockfd,recvline,strlen(recvline),0);if(strncmp(recvline,"257",3)==0){issuccess=1;}else{issuccess=0;} }//改變目錄函數chdir void ftp_changdir(char *dir,int control_sockfd) {char sendline[1024];char recvline[1024];int recvbytes,sendbytes;zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"CWD ");strcat(sendline,dir);strcat(sendline,"/r/n");printf("%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("cwd send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("cwd recv is error!/n");}if(strncmp(recvline,"250",3)==0){char buf[55];snprintf(buf,39,">>> %s/n",recvline);printf("%s/n",buf);}else{printf("cwd chdir is error!/n");exit(1);} }//pwd 命令函數 //在應答中返回當前工作目錄,“pwd”+/r/n void ftp_pwd(int control_sockfd) {int recvbytes,sendbytes;char sendline[1024],recvline[1024];zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"PWD");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("pwd,send is error/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"257",3)==0){int i=0;char *ptr;char currendir[1024];zeromery(currendir,1024);ptr=recvline+5;while(*(ptr)!='"'){currendir[i++]=*(ptr);ptr++;}currendir[i]='/0';printf("current directory is:%s/n",currendir);}else{printf("pwd,recv is error!/n");} }//獲取服務器文件列表 //list命令,是數據通道,通過的是21端口。the function 's struct is "the data //transport mode"(ascii or b) puls "the data mode to transport"(pasv or port//) puls "the list command" void ftp_list(int control_sockfd) {int pasv_or_port;// 定義the ftp協議的兩種不同工作modeint recvbytes,sendbytes;char sendline[1024],recvline[1024];struct sockaddr_in serv_addr;int i,j;int flag=0;int data_sockfd;//用戶來選擇pasv 或者是 port mode(默認的是pasv模式)char selectdata_mode_tran[1024];zeromery(selectdata_mode_tran,1024);zeromery(sendline,1024);zeromery(recvline,1024);//printf("ftp->ftp協議工作方式選擇(pasv or port)/n");//printf("ftp->"); // scanf("%s",selectdata_mode_tran);//if(strncmp(selectdata_mode_tran,"pasv",4)==0)//{pasv_or_port=0; // } // if(strncmp(selectdata_mode_tran,"port",4)==0) // { // pasv_or_port=1; // }//pasv modeif(pasv_or_port==0){strcat(sendline,"PASV");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("pasv send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("pasv recv is error!/n");}if(strncmp(recvline,"227",3)==0){printf("%s/n",recvline);}else{printf("pasv recv is error!/n");} //處理ftp server 端口char *ptr1,*ptr2;char num[1024];zeromery(num,1024);//取低位字節ptr1=recvline+strlen(recvline);while(*(ptr1)!=')'){ptr1--;}ptr2=ptr1;while(*(ptr2)!=',')ptr2--;strncpy(num,ptr2+1,ptr1-ptr2-1);i=atoi(num);//將字符串轉換成整數//取高位字節zeromery(num,1024);ptr1=ptr2;ptr2--;while(*(ptr2)!=',')ptr2--;strncpy(num,ptr2+1,ptr1-ptr2-1);j=atoi(num);//初始化服務器數據連接時的端口信息int data_serviceport;data_serviceport=j*256+i;data_sockfd=socket(AF_INET,SOCK_STREAM,0);serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=INADDR_ANY;serv_addr.sin_port=htons(data_serviceport);if(connect(data_sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr))==-1){printf("pasv data connect is error!/n");}}//port modeif(pasv_or_port==1){data_sockfd=socket(AF_INET,SOCK_STREAM,0);if(data_sockfd<0){printf("創建數據端口連接失敗!/n");}serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=INADDR_ANY;serv_addr.sin_port=htons(SERV_PORT);int ret;int addrlen;ret=sizeof(struct sockaddr_in);getsockname(data_sockfd,(SA*)&serv_addr,&ret);//處理port 后面要帶的參數char ip[1024];int i,j;char data[1024];zeromery(ip,1024);zeromery(data,1024);inet_ntop(AF_INET,&(serv_addr.sin_addr),ip,sizeof(ip));printf("%s/n",ip);i=data_sockfd/256;j=data_sockfd%256;//將點分十進制的點轉換為逗號。char *ptr1;ptr1=ip;while(*(ptr1)!='/0'){if(*(ptr1)=='.'){*(ptr1)=',';}ptr1++;}strcat(sendline,"PORT ");strcat(sendline,ip);strcat(sendline,",");strcat(sendline,itoa(i,data,10));strcat(sendline,",");strcat(sendline,itoa(j,data,10));strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("port send is error!/n");exit(1);}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"200",3)==0){printf("%s/n",recvline);}else{printf("port recv is error!/n");}}//typezeromery(recvline,1024);zeromery(sendline,1024);strcat(sendline,"TYPE ");strcat(sendline,"I");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf(" type send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"200",3)==0){printf("使用二進制傳輸數據/n");}else{printf("type recv is error!/n");}//listzeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"LIST");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("list send is error!/n");} recvdata:sleep(1);recvbytes=recv(data_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){close(data_sockfd);goto ending;}printf("%s",recvline);if(flag==0){zeromery(recvline,1024);recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"226",3)!=0){flag=1;goto recvdata;}} ending:if(flag!=1){zeromery(recvline,1024);}close(data_sockfd); }//itoa 函數的實現(整數轉換成字符串) char *itoa(int value, char *string, int radix) {char tmp[33];char *tp = tmp;int i;unsigned v;int sign;char *sp;sign = (radix == 10 && value < 0);if (sign)v = -value;elsev = (unsigned)value;while (v || tp == tmp){i = v % radix;v = v / radix;if (i < 10)*tp++ = i+'0';else*tp++ = i + 'a' - 10;}if (string == 0)string = (char *)malloc((tp-tmp)+sign+1);sp = string;if (sign)*sp++ = '-';while (tp > tmp)*sp++ = *--tp;*sp = 0;return string; }//back 返回上一級函數,相當于cd /; void ftp_back(int control_sockfd) {char sendline[1024],recvline[1024];int recvbytes,sendbytes;zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"CDUP");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("cdup send is error !/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("cdup recv is error !/n");}if(strncmp(recvline,"250",3)==0){printf("請求的文件操作已經成功/n");} } //stru命令的實現 void ftp_stru(int control_sockfd) {int recvbytes,sendbytes;char sendline[1024],recvline[1024];zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"STRU");strcat(sendline,"F");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("stru send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("stru recv is error!/n");}if(strncmp(recvline,"200",3)==0){f=0;}}//斷點函數的支持 void ftp_rest(int control_sockfd) {int recvbytes,sendbytes;char sendline[1024],recvline[1024];zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"REST ");strcat(sendline,"500");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("stru send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("stru recv is error!/n");}if(strncmp(recvline,"350",3)==0){printf("%s/n",recvline);} }//下載的實現函數 int ftp_download(int control_sockfd) {int pasv_or_port;// 定義the ftp協議的兩種不同工作modeint recvbytes,sendbytes;char sendline[1024],recvline[1024];struct sockaddr_in serv_addr;FILE *fd;int i,j;int data_sockfd;//restftp_rest(control_sockfd);//typezeromery(recvline,1024);zeromery(sendline,1024);strcat(sendline,"TYPE ");strcat(sendline,"I");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf(" type send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"200",3)==0){printf("使用二進制傳輸數據/n");}else{printf("type recv is error!/n");}if(npsupport==1){//open the fileint size;char localpathname[60];//預打開的文件路徑字符串int flags;char pathname[60];unsigned int mode;//用戶來選擇pasv 或者是 port modechar selectdata_mode_tran[1024];zeromery(selectdata_mode_tran,1024);zeromery(sendline,1024);zeromery(recvline,1024);pasv_or_port=0;//(默認是pasv模式)//pasv modeif(pasv_or_port==0){strcat(sendline,"PASV");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("pasv send is error!/n");}zeromery(recvline,1024);recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("pasv recv is error!/n");}if(strncmp(recvline,"227",3)==0){char buf[55];snprintf(buf,51,">>> %s/n",recvline);printf("%s/n",buf);}else{printf("pasv recv is error!/n");} //處理ftp server 端口char *ptr1,*ptr2;char num[1024];zeromery(num,1024);//取低位字節ptr1=recvline+strlen(recvline);while(*(ptr1)!=')'){ptr1--;}ptr2=ptr1;while(*(ptr2)!=',')ptr2--;strncpy(num,ptr2+1,ptr1-ptr2-1);i=atoi(num);//將字符串轉換成整數//取高位字節zeromery(num,1024);ptr1=ptr2;ptr2--;while(*(ptr2)!=',')ptr2--;strncpy(num,ptr2+1,ptr1-ptr2-1);j=atoi(num);//初始化服務器數據連接時的端口信息int data_serviceport;data_serviceport=j*256+i;data_sockfd=socket(AF_INET,SOCK_STREAM,0);serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=INADDR_ANY;serv_addr.sin_port=htons(data_serviceport);if(connect(data_sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr))==-1){printf("pasv data connect is error!/n");}printf("remote-file-pathname=");scanf("%s",pathname);printf("local-file-pathname=");scanf("%s",localpathname);printf("local:%s remore:%s/n",localpathname,pathname);fd=fopen(localpathname,"w+");if(fd==NULL){printf("cannot open file/n");exit(1);}//send the command retr;zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"RETR ");strcat(sendline,pathname);strcat(sendline,"/r/n");printf("%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("retr send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("retr recv is error!/n");}if(strncmp(recvline,"400",3)>0){printf("return is error!/n");}}//port mode/*if(pasv_or_port==1){data_sockfd=socket(AF_INET,SOCK_STREAM,0);if(data_sockfd<0){printf("創建數據端口連接失敗!/n");}serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=INADDR_ANY;serv_addr.sin_port=htons(SERV_PORT);int ret;int addrlen;ret=sizeof(struct sockaddr_in);getsockname(data_sockfd,(SA*)&serv_addr,&ret);//處理port 后面要帶的參數char ip[1024];int i,j;char data[1024];zeromery(ip,1024);zeromery(data,1024);inet_ntop(AF_INET,&(serv_addr.sin_addr),ip,sizeof(ip));printf("%s/n",ip);i=data_sockfd/256;j=data_sockfd%256;//將點分十進制的點轉換為逗號。char *ptr1;ptr1=ip;while(*(ptr1)!='/0'){if(*(ptr1)=='.'){*(ptr1)=',';}ptr1++;}strcat(sendline,"PORT ");strcat(sendline,ip);strcat(sendline,",");strcat(sendline,itoa(i,data,10));strcat(sendline,",");strcat(sendline,itoa(j,data,10));strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("port send is error!/n");exit(1);}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"200",3)==0){printf("%s/n",recv);}else{printf("port recv is error!/n");}}*///begin to transpotr datasleep(1);int flag=0;char buffer[65536]; recvdata:zeromery(buffer,1024);recvbytes=recv(data_sockfd,buffer,sizeof(buffer),0);if(recvbytes<0){close(data_sockfd);goto end;}fwrite(buffer,1,recvbytes,fd);zeromery(recvline,1024);recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(flag==0){if(strncmp(recvline,"226",3)!=0){flag=1;goto recvdata;}} end:if(flag!=1){zeromery(recvline,1024);shutdown(data_sockfd,SHUT_WR);close(data_sockfd);}close(data_sockfd); /* int err;char buffer[65535];err=read(data_sockfd,buffer,sizeof(buffer));sleep(5);fwrite(buffer,1,err,fd);sleep(5);zeromery(recvline,1024);recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"226",3)==0){end: printf("226 transfer complete/n");close(data_sockfd);}*/return 0;} }//up 函數 int ftp_up(int control_sockfd) {int pasv_or_port;// 定義the ftp協議的兩種不同工作modeint recvbytes,sendbytes;char sendline[1024],recvline[1024];struct sockaddr_in serv_addr;FILE *fd;int i,j;int data_sockfd;//typezeromery(recvline,1024);zeromery(sendline,1024);strcat(sendline,"TYPE ");strcat(sendline,"I");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf(" type send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"200",3)==0){printf("使用二進制傳輸數據/n");}else{printf("type recv is error!/n");}if(npsupport==1){//open the fileint size;char localpathname[60];//預打開的文件路徑字符串int flags;char pathname[60];unsigned int mode;//用戶來選擇pasv 或者是 port modechar selectdata_mode_tran[1024];zeromery(selectdata_mode_tran,1024);zeromery(sendline,1024);zeromery(recvline,1024);pasv_or_port=0;//(默認是pasv模式)//pasv modeif(pasv_or_port==0){strcat(sendline,"PASV");strcat(sendline,"/r/n");sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("pasv send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("pasv recv is error!/n");}if(strncmp(recvline,"227",3)==0){char buf[55];snprintf(buf,51,">>> %s/n",recvline);printf("%s/n",buf);}else{printf("pasv recv is error!/n");} //處理ftp server 端口char *ptr1,*ptr2;char num[1024];zeromery(num,1024);//取低位字節ptr1=recvline+strlen(recvline);while(*(ptr1)!=')'){ptr1--;}ptr2=ptr1;while(*(ptr2)!=',')ptr2--;strncpy(num,ptr2+1,ptr1-ptr2-1);i=atoi(num);//將字符串轉換成整數//取高位字節zeromery(num,1024);ptr1=ptr2;ptr2--;while(*(ptr2)!=',')ptr2--;strncpy(num,ptr2+1,ptr1-ptr2-1);j=atoi(num);//初始化服務器數據連接時的端口信息int data_serviceport;data_serviceport=j*256+i;data_sockfd=socket(AF_INET,SOCK_STREAM,0);serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=INADDR_ANY;serv_addr.sin_port=htons(data_serviceport);if(connect(data_sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr))==-1){printf("pasv data connect is error!/n");}printf("local-file-pathname=");scanf("%s",pathname);printf("remote-file-pathname=");scanf("%s",localpathname);printf("local:%s remore:%s/n",localpathname,pathname);fd=fopen(pathname,"r");if(fd==NULL){printf("cannot open file,請重新輸入!/n");}//send the command retr;zeromery(sendline,1024);zeromery(recvline,1024);strcat(sendline,"STOR ");strcat(sendline,localpathname);strcat(sendline,"/r/n");printf("%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("stor send is error!/n");}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(recvbytes<0){printf("retr recv is error!/n");}if(strncmp(recvline,"150",3)==0){char buf[55];snprintf(buf,25,">>> %s/n",recvline);printf("%s/n",buf);}}//port mode/*if(pasv_or_port==1){data_sockfd=socket(AF_INET,SOCK_STREAM,0);if(data_sockfd<0){printf("創建數據端口連接失敗!/n");}serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=INADDR_ANY;serv_addr.sin_port=htons(SERV_PORT);int ret;int addrlen;ret=sizeof(struct sockaddr_in);getsockname(data_sockfd,(SA*)&serv_addr,&ret);//處理port 后面要帶的參數char ip[1024];int i,j;char data[1024];zeromery(ip,1024);zeromery(data,1024);inet_ntop(AF_INET,&(serv_addr.sin_addr),ip,sizeof(ip));printf("%s/n",ip);i=data_sockfd/256;j=data_sockfd%256;//將點分十進制的點轉換為逗號。char *ptr1;ptr1=ip;while(*(ptr1)!='/0'){if(*(ptr1)=='.'){*(ptr1)=',';}ptr1++;}strcat(sendline,"PORT ");strcat(sendline,ip);strcat(sendline,",");strcat(sendline,itoa(i,data,10));strcat(sendline,",");strcat(sendline,itoa(j,data,10));strcat(sendline,"/r/n");printf("--->%s/n",sendline);sendbytes=send(control_sockfd,sendline,strlen(sendline),0);if(sendbytes<0){printf("port send is error!/n");exit(1);}recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"200",3)==0){printf("%s/n",recv);}else{printf("port recv is error!/n");}}*///begin to transpotr datawhile(!feof(fd)){ char buffer[65536];zeromery(buffer,sizeof(buffer));int size;size=fread(buffer,1,sizeof(buffer),fd);if(ferror(fd)){printf("read file data is error!/n");break;}else{zeromery(sendline,1024);sendbytes=send(data_sockfd,buffer,size,0);printf("傳輸了 %d 個字節/n",sendbytes);}close(data_sockfd);recvbytes=recv(control_sockfd,recvline,sizeof(recvline),0);if(strncmp(recvline,"226",3)==0){printf("226 transfer complete");break;}}return 0;} }

    ?

    總結

    以上是生活随笔為你收集整理的FTP 客户端C实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    亚洲欧洲日本综合aⅴ在线 | 亚洲乱码国产乱码精品精 | 无码午夜成人1000部免费视频 | 日本爽爽爽爽爽爽在线观看免 | 美女极度色诱视频国产 | 久久国产精品_国产精品 | www国产亚洲精品久久网站 | 免费观看又污又黄的网站 | 97久久超碰中文字幕 | 久久午夜无码鲁丝片秋霞 | 欧美35页视频在线观看 | 特大黑人娇小亚洲女 | 国产av一区二区精品久久凹凸 | 玩弄少妇高潮ⅹxxxyw | 中文字幕无码日韩专区 | 免费国产黄网站在线观看 | 国产精品久久国产精品99 | 国产精品爱久久久久久久 | 亚洲小说春色综合另类 | 亚洲精品午夜国产va久久成人 | 亚洲高清偷拍一区二区三区 | 日本在线高清不卡免费播放 | 亚洲人亚洲人成电影网站色 | 色综合久久88色综合天天 | 亚洲人成人无码网www国产 | 亚洲一区二区三区在线观看网站 | 亚洲精品一区二区三区婷婷月 | 久久久久久av无码免费看大片 | 色爱情人网站 | 久久精品国产大片免费观看 | 亚洲一区二区三区香蕉 | 久久国产精品二国产精品 | 性色欲网站人妻丰满中文久久不卡 | 国产热a欧美热a在线视频 | 无码毛片视频一区二区本码 | 成人免费无码大片a毛片 | 国产精品人妻一区二区三区四 | 奇米影视888欧美在线观看 | 少妇人妻av毛片在线看 | 天天拍夜夜添久久精品大 | 国产精品亚洲lv粉色 | 国产性生大片免费观看性 | 国产精品高潮呻吟av久久4虎 | 亚洲精品一区二区三区四区五区 | 久久精品国产一区二区三区 | 亚洲大尺度无码无码专区 | 麻豆国产人妻欲求不满谁演的 | 无码毛片视频一区二区本码 | 性生交片免费无码看人 | 丰满妇女强制高潮18xxxx | 女人被男人躁得好爽免费视频 | 久久久久av无码免费网 | 色五月五月丁香亚洲综合网 | 成人影院yy111111在线观看 | 亚洲中文字幕成人无码 | 精品无码国产自产拍在线观看蜜 | 一二三四在线观看免费视频 | 日本一卡二卡不卡视频查询 | 88国产精品欧美一区二区三区 | 老熟女重囗味hdxx69 | 熟妇人妻无乱码中文字幕 | 国产无遮挡吃胸膜奶免费看 | 国产精品亚洲一区二区三区喷水 | 国产农村妇女高潮大叫 | 亚洲国产一区二区三区在线观看 | 亚洲爆乳大丰满无码专区 | 男人扒开女人内裤强吻桶进去 | 亚洲 欧美 激情 小说 另类 | 疯狂三人交性欧美 | 国产精品18久久久久久麻辣 | 久久久中文字幕日本无吗 | 午夜理论片yy44880影院 | 国产无av码在线观看 | 人妻有码中文字幕在线 | 麻豆国产丝袜白领秘书在线观看 | 精品国精品国产自在久国产87 | 日产国产精品亚洲系列 | 国产真实伦对白全集 | 嫩b人妻精品一区二区三区 | 亚洲va欧美va天堂v国产综合 | 性欧美熟妇videofreesex | aⅴ亚洲 日韩 色 图网站 播放 | 日韩人妻少妇一区二区三区 | 美女黄网站人色视频免费国产 | 亚洲人交乣女bbw | 免费观看激色视频网站 | 亚洲欧美中文字幕5发布 | 秋霞成人午夜鲁丝一区二区三区 | 男女性色大片免费网站 | aⅴ亚洲 日韩 色 图网站 播放 | 久久亚洲中文字幕无码 | 人妻体内射精一区二区三四 | 国产精品第一国产精品 | 精品日本一区二区三区在线观看 | 少妇激情av一区二区 | 国精产品一区二区三区 | 亚洲国产精品一区二区第一页 | 日日躁夜夜躁狠狠躁 | 人人爽人人澡人人人妻 | 国产激情艳情在线看视频 | 国产成人精品无码播放 | 国产欧美亚洲精品a | 高中生自慰www网站 | 亚洲国产精品久久久天堂 | 真人与拘做受免费视频一 | аⅴ资源天堂资源库在线 | 亚洲精品一区二区三区四区五区 | 97se亚洲精品一区 | 日韩人妻无码中文字幕视频 | 乱人伦中文视频在线观看 | 国产无套粉嫩白浆在线 | 无码播放一区二区三区 | 成人无码视频免费播放 | 亚洲人成人无码网www国产 | 国产后入清纯学生妹 | 国产农村乱对白刺激视频 | 久久伊人色av天堂九九小黄鸭 | 国产婷婷色一区二区三区在线 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品多人p群无码 | 色综合久久中文娱乐网 | 亚洲日韩乱码中文无码蜜桃臀网站 | yw尤物av无码国产在线观看 | 久久久久久亚洲精品a片成人 | 国产极品美女高潮无套在线观看 | 亚洲中文字幕无码中文字在线 | 久久五月精品中文字幕 | 久久精品成人欧美大片 | 成熟女人特级毛片www免费 | 大色综合色综合网站 | 欧美丰满老熟妇xxxxx性 | 日本又色又爽又黄的a片18禁 | 麻豆成人精品国产免费 | 99视频精品全部免费免费观看 | 久久99久久99精品中文字幕 | 国产97人人超碰caoprom | 国产人妻人伦精品1国产丝袜 | 久久综合久久自在自线精品自 | 一本久久a久久精品vr综合 | 99er热精品视频 | 久久综合香蕉国产蜜臀av | 欧美zoozzooz性欧美 | 欧美性黑人极品hd | 少妇无套内谢久久久久 | 国产精品亚洲综合色区韩国 | 天堂在线观看www | 伊人色综合久久天天小片 | 极品嫩模高潮叫床 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产一区二区三区影院 | 亚洲精品一区三区三区在线观看 | 日日摸日日碰夜夜爽av | 一个人看的www免费视频在线观看 | 三级4级全黄60分钟 | 无码成人精品区在线观看 | 亚洲区小说区激情区图片区 | 精品国产成人一区二区三区 | 国内少妇偷人精品视频免费 | 日韩精品无码一本二本三本色 | 亚洲一区二区三区含羞草 | 成人综合网亚洲伊人 | 久久99精品国产麻豆 | 亚洲成av人影院在线观看 | 在线亚洲高清揄拍自拍一品区 | 少妇性l交大片欧洲热妇乱xxx | 久久亚洲精品成人无码 | 欧美丰满少妇xxxx性 | 在线观看欧美一区二区三区 | 亚洲综合另类小说色区 | 正在播放老肥熟妇露脸 | 一本色道婷婷久久欧美 | 最新国产麻豆aⅴ精品无码 | 国产精品美女久久久久av爽李琼 | 亚洲国产av美女网站 | 亚洲日本一区二区三区在线 | 无码吃奶揉捏奶头高潮视频 | 日韩人妻少妇一区二区三区 | 国产激情无码一区二区 | 久久综合久久自在自线精品自 | 国产成人精品优优av | 无码免费一区二区三区 | 色欲av亚洲一区无码少妇 | 欧美日本免费一区二区三区 | 欧美人妻一区二区三区 | 亚洲一区二区三区香蕉 | 久久精品视频在线看15 | 国模大胆一区二区三区 | 中文字幕av无码一区二区三区电影 | 久久午夜无码鲁丝片 | 天天拍夜夜添久久精品 | 亚洲欧美综合区丁香五月小说 | 国产在线精品一区二区三区直播 | 欧美人与物videos另类 | 亚洲区欧美区综合区自拍区 | 国产成人久久精品流白浆 | 日日橹狠狠爱欧美视频 | 日日天干夜夜狠狠爱 | 午夜理论片yy44880影院 | 国产无遮挡又黄又爽又色 | 国产精品永久免费视频 | 久久综合九色综合欧美狠狠 | 欧美亚洲日韩国产人成在线播放 | 欧美怡红院免费全部视频 | √天堂资源地址中文在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕乱码亚洲无线三区 | 国产成人无码一二三区视频 | 一本无码人妻在中文字幕免费 | 国产精品久久久久久亚洲影视内衣 | 任你躁在线精品免费 | 丰满人妻被黑人猛烈进入 | 久久精品国产亚洲精品 | 国产精品亚洲一区二区三区喷水 | 成人试看120秒体验区 | 国产乡下妇女做爰 | 99精品无人区乱码1区2区3区 | 亚洲va欧美va天堂v国产综合 | 乌克兰少妇xxxx做受 | 久久无码专区国产精品s | www国产亚洲精品久久久日本 | 性生交片免费无码看人 | 爱做久久久久久 | 中文字幕无码日韩专区 | 中文字幕无码免费久久9一区9 | 国产精品高潮呻吟av久久 | 76少妇精品导航 | 4hu四虎永久在线观看 | 人人妻人人澡人人爽欧美一区九九 | 精品人妻人人做人人爽夜夜爽 | 日韩精品a片一区二区三区妖精 | 久久久精品456亚洲影院 | 亚洲码国产精品高潮在线 | 男女猛烈xx00免费视频试看 | 色一情一乱一伦一视频免费看 | 妺妺窝人体色www婷婷 | 极品嫩模高潮叫床 | 国产一区二区三区影院 | 无码人妻出轨黑人中文字幕 | 日韩av无码一区二区三区不卡 | 亚洲精品国偷拍自产在线麻豆 | 人妻人人添人妻人人爱 | 俺去俺来也在线www色官网 | 麻豆果冻传媒2021精品传媒一区下载 | 无码免费一区二区三区 | 国产后入清纯学生妹 | 又黄又爽又色的视频 | 亚洲男人av香蕉爽爽爽爽 | 欧美性猛交内射兽交老熟妇 | 老熟妇仑乱视频一区二区 | 亚洲日本va午夜在线电影 | 精品国产一区二区三区av 性色 | 无码国产色欲xxxxx视频 | 天天躁夜夜躁狠狠是什么心态 | 性生交片免费无码看人 | 99riav国产精品视频 | 亚洲成av人影院在线观看 | 国产美女极度色诱视频www | 一本色道久久综合亚洲精品不卡 | 国产av无码专区亚洲awww | 无码吃奶揉捏奶头高潮视频 | 蜜臀aⅴ国产精品久久久国产老师 | 久久综合九色综合97网 | 97久久国产亚洲精品超碰热 | 日本欧美一区二区三区乱码 | 在线精品亚洲一区二区 | 欧美freesex黑人又粗又大 | 丰满人妻被黑人猛烈进入 | 国产无遮挡又黄又爽免费视频 | 国产高清不卡无码视频 | 波多野结衣 黑人 | 99麻豆久久久国产精品免费 | 精品国产一区av天美传媒 | 人妻中文无码久热丝袜 | 中文字幕精品av一区二区五区 | 亚洲成熟女人毛毛耸耸多 | 久久无码中文字幕免费影院蜜桃 | 亚洲欧美日韩综合久久久 | 一区二区三区乱码在线 | 欧洲 | 51国偷自产一区二区三区 | 国产av无码专区亚洲awww | www成人国产高清内射 | 久久国产精品偷任你爽任你 | 国产午夜手机精彩视频 | 波多野42部无码喷潮在线 | 双乳奶水饱满少妇呻吟 | 亚洲熟妇色xxxxx亚洲 | 国产成人综合美国十次 | 扒开双腿吃奶呻吟做受视频 | 国产69精品久久久久app下载 | 久久国产精品_国产精品 | 人人妻人人澡人人爽人人精品浪潮 | 色欲av亚洲一区无码少妇 | 在线天堂新版最新版在线8 | 狠狠色欧美亚洲狠狠色www | 亚洲成av人片在线观看无码不卡 | 午夜精品一区二区三区在线观看 | 日日摸天天摸爽爽狠狠97 | 午夜福利不卡在线视频 | 国产精品久久久av久久久 | 日本精品少妇一区二区三区 | 美女扒开屁股让男人桶 | 久久人人爽人人爽人人片ⅴ | 东京一本一道一二三区 | 国产偷抇久久精品a片69 | 国产舌乚八伦偷品w中 | 亚洲日韩一区二区 | 亚洲精品无码国产 | 熟妇人妻无码xxx视频 | 亚洲精品成人av在线 | 午夜无码区在线观看 | 2019nv天堂香蕉在线观看 | 国产成人人人97超碰超爽8 | 日日麻批免费40分钟无码 | 三上悠亚人妻中文字幕在线 | 亚洲国产综合无码一区 | 中文字幕亚洲情99在线 | 国产人妖乱国产精品人妖 | 无套内射视频囯产 | 少妇无码av无码专区在线观看 | 无码成人精品区在线观看 | 国产成人午夜福利在线播放 | 国产深夜福利视频在线 | 1000部啪啪未满十八勿入下载 | 内射后入在线观看一区 | 青春草在线视频免费观看 | 国产亚洲美女精品久久久2020 | 中文字幕人妻无码一夲道 | 日韩亚洲欧美中文高清在线 | 国精品人妻无码一区二区三区蜜柚 | 国产精品内射视频免费 | 久久久久成人片免费观看蜜芽 | 欧美成人家庭影院 | 亚洲精品成人福利网站 | 成人亚洲精品久久久久 | 亚洲国产av精品一区二区蜜芽 | 97久久超碰中文字幕 | 久久天天躁狠狠躁夜夜免费观看 | 久久久无码中文字幕久... | 人妻尝试又大又粗久久 | 女高中生第一次破苞av | 四虎国产精品一区二区 | 麻豆成人精品国产免费 | 樱花草在线社区www | 九九综合va免费看 | 国产艳妇av在线观看果冻传媒 | 欧美成人午夜精品久久久 | 久久99精品国产麻豆蜜芽 | 婷婷综合久久中文字幕蜜桃三电影 | 2020久久香蕉国产线看观看 | 亚洲成色www久久网站 | 国产国产精品人在线视 | 一本久道久久综合狠狠爱 | 国产精品香蕉在线观看 | 国产成人精品三级麻豆 | 理论片87福利理论电影 | 无码人妻久久一区二区三区不卡 | 亚洲区欧美区综合区自拍区 | 国产内射老熟女aaaa | 亚洲区小说区激情区图片区 | 精品国产国产综合精品 | 亚洲色偷偷偷综合网 | 国内精品久久毛片一区二区 | 一本色道久久综合狠狠躁 | 亚洲精品综合一区二区三区在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 四十如虎的丰满熟妇啪啪 | 无套内谢的新婚少妇国语播放 | 亚洲欧美色中文字幕在线 | 成人欧美一区二区三区 | 国产综合在线观看 | 亚洲色在线无码国产精品不卡 | 国内少妇偷人精品视频 | 在线观看免费人成视频 | 欧美日韩一区二区三区自拍 | 国产人妖乱国产精品人妖 | 无码人妻丰满熟妇区五十路百度 | 日韩人妻无码中文字幕视频 | 亚洲国产精品无码久久久久高潮 | 亚洲人成无码网www | 日韩av无码一区二区三区不卡 | 在线播放亚洲第一字幕 | 免费国产成人高清在线观看网站 | 久久精品人妻少妇一区二区三区 | 亚洲热妇无码av在线播放 | 国产网红无码精品视频 | 久久人人爽人人人人片 | 伊人久久大香线蕉av一区二区 | 日韩无套无码精品 | 日韩无套无码精品 | 漂亮人妻洗澡被公强 日日躁 | 欧美日韩亚洲国产精品 | 中文字幕av无码一区二区三区电影 | 国产精品爱久久久久久久 | 国产精品国产三级国产专播 | 中国女人内谢69xxxxxa片 | 欧美成人午夜精品久久久 | 午夜免费福利小电影 | 国产香蕉97碰碰久久人人 | 无遮无挡爽爽免费视频 | 免费无码肉片在线观看 | 亚洲精品国产a久久久久久 | 精品人妻人人做人人爽 | 黑人粗大猛烈进出高潮视频 | 久久亚洲中文字幕无码 | 国产精品久久久久久无码 | 亚洲精品一区二区三区四区五区 | 少妇高潮一区二区三区99 | 中文字幕日产无线码一区 | 国内精品人妻无码久久久影院蜜桃 | 中文字幕无码免费久久99 | 精品 日韩 国产 欧美 视频 | 大乳丰满人妻中文字幕日本 | 午夜福利不卡在线视频 | 国产精品久久国产三级国 | 国内综合精品午夜久久资源 | 久久午夜无码鲁丝片午夜精品 | 中文字幕乱码人妻二区三区 | 在线天堂新版最新版在线8 | 无码人妻av免费一区二区三区 | 天天拍夜夜添久久精品 | 青青青手机频在线观看 | 国产精华av午夜在线观看 | 人妻天天爽夜夜爽一区二区 | 亚洲欧美日韩国产精品一区二区 | 国产综合在线观看 | 国产偷国产偷精品高清尤物 | 99久久精品午夜一区二区 | 欧美高清在线精品一区 | 无码国产激情在线观看 | √天堂资源地址中文在线 | 天堂亚洲2017在线观看 | 欧美喷潮久久久xxxxx | 国产99久久精品一区二区 | 国产精品丝袜黑色高跟鞋 | 国产精品无码久久av | 久久精品中文闷骚内射 | 无码国内精品人妻少妇 | 国产成人无码av在线影院 | 亚洲精品鲁一鲁一区二区三区 | 帮老师解开蕾丝奶罩吸乳网站 | 国产极品美女高潮无套在线观看 | 蜜桃臀无码内射一区二区三区 | 国产 精品 自在自线 | 亚洲精品久久久久久久久久久 | 秋霞成人午夜鲁丝一区二区三区 | 人人爽人人澡人人人妻 | 国产无套粉嫩白浆在线 | 亚洲人成网站色7799 | 国产真实伦对白全集 | 亚洲一区二区三区四区 | 粗大的内捧猛烈进出视频 | 中文字幕无码av激情不卡 | 国产一精品一av一免费 | 黑人玩弄人妻中文在线 | 十八禁视频网站在线观看 | 国产亲子乱弄免费视频 | 日韩成人一区二区三区在线观看 | 国产成人无码区免费内射一片色欲 | 四虎4hu永久免费 | 国产免费无码一区二区视频 | 亚洲中文字幕乱码av波多ji | 男人扒开女人内裤强吻桶进去 | 国产欧美精品一区二区三区 | 全黄性性激高免费视频 | 国产真实夫妇视频 | 久久国产精品二国产精品 | 人人妻人人澡人人爽欧美一区 | 国产精品无码一区二区桃花视频 | 欧美性猛交内射兽交老熟妇 | 六十路熟妇乱子伦 | 天天躁日日躁狠狠躁免费麻豆 | 男人的天堂av网站 | av无码电影一区二区三区 | 99国产欧美久久久精品 | 大屁股大乳丰满人妻 | 日韩精品乱码av一区二区 | 国产亲子乱弄免费视频 | 成人免费视频视频在线观看 免费 | 免费乱码人妻系列无码专区 | 亚洲 a v无 码免 费 成 人 a v | 国产精品无码久久av | 国产乱码精品一品二品 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产精品久久久av久久久 | 黑人玩弄人妻中文在线 | 网友自拍区视频精品 | 国产人妻精品一区二区三区不卡 | 激情人妻另类人妻伦 | 麻豆国产人妻欲求不满 | 亚洲精品欧美二区三区中文字幕 | 国产女主播喷水视频在线观看 | 人人妻在人人 | 精品成在人线av无码免费看 | 久久99精品久久久久久 | 成在人线av无码免观看麻豆 | 日本又色又爽又黄的a片18禁 | 亚洲成a人片在线观看日本 | 亚洲国产成人av在线观看 | 亚洲中文字幕久久无码 | 女人被男人爽到呻吟的视频 | 夜夜躁日日躁狠狠久久av | 在线观看免费人成视频 | 久久久久久九九精品久 | 日韩精品无码一区二区中文字幕 | 日韩av无码中文无码电影 | 久久综合九色综合欧美狠狠 | 麻豆国产97在线 | 欧洲 | 国产乱人伦av在线无码 | 免费无码一区二区三区蜜桃大 | 日韩成人一区二区三区在线观看 | 正在播放东北夫妻内射 | 99麻豆久久久国产精品免费 | 国产亲子乱弄免费视频 | 人人妻人人藻人人爽欧美一区 | 成人性做爰aaa片免费看 | 午夜成人1000部免费视频 | 国产午夜无码精品免费看 | 色婷婷综合中文久久一本 | 爱做久久久久久 | 久久99久久99精品中文字幕 | 男人和女人高潮免费网站 | 婷婷色婷婷开心五月四房播播 | 精品久久久无码人妻字幂 | 久久久国产精品无码免费专区 | 久久zyz资源站无码中文动漫 | 人人妻人人澡人人爽欧美一区九九 | 中文无码成人免费视频在线观看 | 国内揄拍国内精品少妇国语 | 乱码午夜-极国产极内射 | 亚洲人成影院在线观看 | 成人亚洲精品久久久久软件 | 无码av岛国片在线播放 | 妺妺窝人体色www在线小说 | 中文字幕乱码中文乱码51精品 | 久久伊人色av天堂九九小黄鸭 | 狠狠综合久久久久综合网 | 精品亚洲韩国一区二区三区 | 国产精品无码一区二区三区不卡 | 香港三级日本三级妇三级 | 亚洲s码欧洲m码国产av | 国产精品美女久久久久av爽李琼 | 成在人线av无码免费 | 亚洲s码欧洲m码国产av | 亚洲综合色区中文字幕 | 天天av天天av天天透 | 撕开奶罩揉吮奶头视频 | 学生妹亚洲一区二区 | 中文亚洲成a人片在线观看 | 国产三级精品三级男人的天堂 | 福利一区二区三区视频在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品.xx视频.xxtv | 国产精品99爱免费视频 | 午夜免费福利小电影 | 亚洲国产欧美日韩精品一区二区三区 | 精品国产一区av天美传媒 | 日本精品少妇一区二区三区 | 装睡被陌生人摸出水好爽 | 欧美zoozzooz性欧美 | 亚洲日韩中文字幕在线播放 | 欧美黑人性暴力猛交喷水 | 国产亚洲精品精品国产亚洲综合 | 国产精品香蕉在线观看 | 国产成人久久精品流白浆 | 国产精品久久久久久亚洲影视内衣 | 亚洲国产欧美在线成人 | 色综合久久88色综合天天 | 乱人伦人妻中文字幕无码 | 欧美乱妇无乱码大黄a片 | 一本久久伊人热热精品中文字幕 | 99久久精品日本一区二区免费 | 狠狠色欧美亚洲狠狠色www | 欧美自拍另类欧美综合图片区 | 久久人人97超碰a片精品 | 国产精品美女久久久久av爽李琼 | 国产精品无码永久免费888 | 欧美freesex黑人又粗又大 | 亚拍精品一区二区三区探花 | 国产精品a成v人在线播放 | 成熟妇人a片免费看网站 | 国产精品鲁鲁鲁 | 色综合久久久无码中文字幕 | 亚洲自偷自偷在线制服 | 丰满肥臀大屁股熟妇激情视频 | 国产成人av免费观看 | 国产人妻人伦精品 | 精品国产一区av天美传媒 | 亚洲色成人中文字幕网站 | 国产精品理论片在线观看 | 久久人人爽人人爽人人片av高清 | 亚洲成a人一区二区三区 | 一本久道久久综合婷婷五月 | 国产亚洲精品久久久久久久久动漫 | 超碰97人人射妻 | 婷婷丁香五月天综合东京热 | 色情久久久av熟女人妻网站 | 狠狠亚洲超碰狼人久久 | 波多野结衣乳巨码无在线观看 | 亚洲无人区一区二区三区 | 亚洲中文字幕在线无码一区二区 | 久久精品99久久香蕉国产色戒 | 日韩精品成人一区二区三区 | 黄网在线观看免费网站 | 伊人久久大香线蕉午夜 | 亚洲熟妇色xxxxx欧美老妇y | 内射后入在线观看一区 | 99久久久国产精品无码免费 | 麻豆成人精品国产免费 | 国产色xx群视频射精 | 日产精品99久久久久久 | 精品国产乱码久久久久乱码 | 日本丰满护士爆乳xxxx | 亚洲欧洲日本无在线码 | 国产欧美精品一区二区三区 | 成人免费视频在线观看 | 国产成人无码av一区二区 | 乱码午夜-极国产极内射 | 全球成人中文在线 | 亚洲国产精品久久人人爱 | 中文字幕无线码免费人妻 | 国产熟女一区二区三区四区五区 | 国产在线aaa片一区二区99 | 国精品人妻无码一区二区三区蜜柚 | 噜噜噜亚洲色成人网站 | 久久zyz资源站无码中文动漫 | 狠狠色噜噜狠狠狠7777奇米 | 国产一区二区三区精品视频 | 久久国产自偷自偷免费一区调 | 中文字幕 人妻熟女 | 三级4级全黄60分钟 | 好爽又高潮了毛片免费下载 | 丰满肥臀大屁股熟妇激情视频 | 自拍偷自拍亚洲精品10p | 久久久久久国产精品无码下载 | 老熟女重囗味hdxx69 | 成人亚洲精品久久久久 | 骚片av蜜桃精品一区 | 精品成人av一区二区三区 | 亚洲国产一区二区三区在线观看 | 无码国产乱人伦偷精品视频 | 图片小说视频一区二区 | 国产综合在线观看 | 欧美国产日韩久久mv | 学生妹亚洲一区二区 | 97人妻精品一区二区三区 | 国产乱人偷精品人妻a片 | 久久综合给合久久狠狠狠97色 | 亚洲色欲久久久综合网东京热 | 中文字幕无码日韩欧毛 | 一本大道伊人av久久综合 | 亚洲综合无码一区二区三区 | 国产美女极度色诱视频www | 日本xxxx色视频在线观看免费 | 国产三级精品三级男人的天堂 | 欧美亚洲日韩国产人成在线播放 | 无码中文字幕色专区 | 色诱久久久久综合网ywww | 又大又黄又粗又爽的免费视频 | 男人和女人高潮免费网站 | 亚洲七七久久桃花影院 | 国产va免费精品观看 | 国产97在线 | 亚洲 | 男女下面进入的视频免费午夜 | 婷婷五月综合激情中文字幕 | 人人爽人人爽人人片av亚洲 | 精品乱码久久久久久久 | 18无码粉嫩小泬无套在线观看 | 97精品国产97久久久久久免费 | 亚洲成av人在线观看网址 | 国产成人综合在线女婷五月99播放 | 国产9 9在线 | 中文 | 亚洲色欲久久久综合网东京热 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产成人亚洲综合无码 | 久久99国产综合精品 | 国产内射老熟女aaaa | 国产激情精品一区二区三区 | 国产熟妇高潮叫床视频播放 | 一个人看的视频www在线 | 午夜时刻免费入口 | 无遮无挡爽爽免费视频 | 精品国产一区av天美传媒 | 亚洲人成影院在线观看 | av在线亚洲欧洲日产一区二区 | 18黄暴禁片在线观看 | 国产乱人偷精品人妻a片 | 激情人妻另类人妻伦 | 成人综合网亚洲伊人 | 999久久久国产精品消防器材 | 日本丰满熟妇videos | 国产精品福利视频导航 | 风流少妇按摩来高潮 | 丰满少妇人妻久久久久久 | 一本久道久久综合狠狠爱 | 蜜臀aⅴ国产精品久久久国产老师 | 久久精品人人做人人综合 | 久久久中文字幕日本无吗 | 欧美性猛交xxxx富婆 | 亚洲国产精华液网站w | 日本一区二区更新不卡 | 亚洲色偷偷偷综合网 | 高潮毛片无遮挡高清免费视频 | 丰满护士巨好爽好大乳 | 18黄暴禁片在线观看 | 成年美女黄网站色大免费视频 | 国产精品久久精品三级 | 国产乱人伦偷精品视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲日韩乱码中文无码蜜桃臀网站 | 日本丰满护士爆乳xxxx | 欧美一区二区三区视频在线观看 | 亚洲国产成人a精品不卡在线 | 无码国产激情在线观看 | 成人免费视频视频在线观看 免费 | 亚洲综合久久一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 成熟人妻av无码专区 | 熟妇女人妻丰满少妇中文字幕 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产色xx群视频射精 | 精品国产麻豆免费人成网站 | 色综合视频一区二区三区 | 一区二区三区高清视频一 | 国产免费观看黄av片 | 一本久久a久久精品亚洲 | 亚洲自偷精品视频自拍 | 精品厕所偷拍各类美女tp嘘嘘 | 成人性做爰aaa片免费看 | 久久国产精品_国产精品 | 无遮挡啪啪摇乳动态图 | 欧美日韩亚洲国产精品 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲一区二区三区无码久久 | 强伦人妻一区二区三区视频18 | 国产肉丝袜在线观看 | 欧美黑人性暴力猛交喷水 | 好男人www社区 | 亚洲乱码中文字幕在线 | 久久www免费人成人片 | 国产黄在线观看免费观看不卡 | 国产黄在线观看免费观看不卡 | 对白脏话肉麻粗话av | 成人精品视频一区二区三区尤物 | 国产口爆吞精在线视频 | 无码帝国www无码专区色综合 | 少妇性l交大片欧洲热妇乱xxx | 麻豆国产97在线 | 欧洲 | 99在线 | 亚洲 | 亚洲成av人片天堂网无码】 | 少妇厨房愉情理9仑片视频 | 野狼第一精品社区 | 国产高清av在线播放 | 少妇的肉体aa片免费 | 一本精品99久久精品77 | 亚洲欧美日韩成人高清在线一区 | 98国产精品综合一区二区三区 | 中文字幕乱码中文乱码51精品 | 国产成人无码午夜视频在线观看 | 真人与拘做受免费视频 | 久久久av男人的天堂 | 一本无码人妻在中文字幕免费 | 亚洲成a人片在线观看无码 | 亚洲阿v天堂在线 | 国内老熟妇对白xxxxhd | 天堂а√在线地址中文在线 | 久久久中文久久久无码 | 久久久中文久久久无码 | 亚洲欧美日韩国产精品一区二区 | 欧美日韩一区二区综合 | 2020久久香蕉国产线看观看 | 欧美日韩视频无码一区二区三 | 97久久超碰中文字幕 | 成人免费无码大片a毛片 | 国产精品第一国产精品 | 无码av岛国片在线播放 | 久久99久久99精品中文字幕 | 国产精品理论片在线观看 | 国内丰满熟女出轨videos | 无码国产乱人伦偷精品视频 | 精品成人av一区二区三区 | 国产午夜手机精彩视频 | 婷婷五月综合激情中文字幕 | 性啪啪chinese东北女人 | 精品无人国产偷自产在线 | 成人欧美一区二区三区 | 天堂在线观看www | 无遮挡啪啪摇乳动态图 | 亚洲一区二区三区国产精华液 | 人妻少妇精品久久 | 秋霞特色aa大片 | 国产无套内射久久久国产 | 国产激情艳情在线看视频 | 国产午夜亚洲精品不卡下载 | 又大又硬又黄的免费视频 | 无码av最新清无码专区吞精 | 少妇邻居内射在线 | 久久婷婷五月综合色国产香蕉 | 粗大的内捧猛烈进出视频 | 亚洲一区二区三区含羞草 | 少妇无码一区二区二三区 | 国产午夜手机精彩视频 | 清纯唯美经典一区二区 | 色一情一乱一伦 | 色综合久久久无码网中文 | 久久综合九色综合欧美狠狠 | 丰满肥臀大屁股熟妇激情视频 | 青青青手机频在线观看 | 自拍偷自拍亚洲精品10p | 国产疯狂伦交大片 | 十八禁视频网站在线观看 | av无码久久久久不卡免费网站 | 国产精品美女久久久网av | 日本精品人妻无码77777 天堂一区人妻无码 | 国产香蕉尹人综合在线观看 | 亚洲精品国产第一综合99久久 | 国内综合精品午夜久久资源 | 日日摸夜夜摸狠狠摸婷婷 | 日韩欧美成人免费观看 | 无码免费一区二区三区 | 免费乱码人妻系列无码专区 | 婷婷六月久久综合丁香 | 成人动漫在线观看 | 人妻人人添人妻人人爱 | 欧美日韩一区二区综合 | 99久久精品国产一区二区蜜芽 | 国内精品人妻无码久久久影院蜜桃 | 国内揄拍国内精品少妇国语 | 免费播放一区二区三区 | 精品无人区无码乱码毛片国产 | 国产口爆吞精在线视频 | 无码午夜成人1000部免费视频 | 综合网日日天干夜夜久久 | 国产热a欧美热a在线视频 | 国产乱子伦视频在线播放 | 亚洲色成人中文字幕网站 | 未满小14洗澡无码视频网站 | 亚洲无人区午夜福利码高清完整版 | 丰腴饱满的极品熟妇 | 无码人妻黑人中文字幕 | 国产艳妇av在线观看果冻传媒 | 色老头在线一区二区三区 | 亚洲成av人片天堂网无码】 | 国产精品高潮呻吟av久久 | 无码中文字幕色专区 | 日韩欧美中文字幕在线三区 | 高清不卡一区二区三区 | 日本丰满护士爆乳xxxx | 国产精品亚洲lv粉色 | 草草网站影院白丝内射 | 国产又爽又黄又刺激的视频 | 国产熟妇另类久久久久 | 99久久精品午夜一区二区 | 99视频精品全部免费免费观看 | 精品无码国产自产拍在线观看蜜 | 四虎国产精品免费久久 | 国产精品亚洲а∨无码播放麻豆 | 日韩av激情在线观看 | 色窝窝无码一区二区三区色欲 | 亚洲熟妇自偷自拍另类 | 在线亚洲高清揄拍自拍一品区 | 中文无码伦av中文字幕 | 亚洲国产综合无码一区 | 最近中文2019字幕第二页 | 波多野结衣av一区二区全免费观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 日欧一片内射va在线影院 | 东北女人啪啪对白 | 国产疯狂伦交大片 | 久久久久久亚洲精品a片成人 | 少妇人妻av毛片在线看 | 国产卡一卡二卡三 | 国产午夜视频在线观看 | 成人性做爰aaa片免费看不忠 | 日韩欧美群交p片內射中文 | 天干天干啦夜天干天2017 | 国内精品久久久久久中文字幕 | 免费看少妇作爱视频 | 欧美日本免费一区二区三区 | www国产亚洲精品久久久日本 | 国产亚洲精品久久久久久国模美 | 亚洲熟妇色xxxxx欧美老妇y | 色欲人妻aaaaaaa无码 | 国内精品人妻无码久久久影院蜜桃 | 无码人妻出轨黑人中文字幕 | 亚洲自偷精品视频自拍 | 亚洲国产精品久久久久久 | 欧美熟妇另类久久久久久不卡 | 国内精品一区二区三区不卡 | 午夜免费福利小电影 | 精品人妻中文字幕有码在线 | 成人性做爰aaa片免费看 | 国产成人无码av片在线观看不卡 | 精品一区二区三区无码免费视频 | 国产成人综合色在线观看网站 | 欧美丰满老熟妇xxxxx性 | 色妞www精品免费视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 麻豆md0077饥渴少妇 | 又色又爽又黄的美女裸体网站 | 无码国产乱人伦偷精品视频 | 亚洲成在人网站无码天堂 | 黑人巨大精品欧美黑寡妇 | 国产人成高清在线视频99最全资源 | 无套内谢的新婚少妇国语播放 | 蜜桃无码一区二区三区 | 日韩欧美中文字幕在线三区 | 初尝人妻少妇中文字幕 | 熟妇人妻无乱码中文字幕 | 成人女人看片免费视频放人 | 99麻豆久久久国产精品免费 | 久久久国产精品无码免费专区 | 影音先锋中文字幕无码 | 亚洲成a人片在线观看日本 | 国内揄拍国内精品人妻 | 欧美日韩在线亚洲综合国产人 | 亚洲小说春色综合另类 | 亚洲欧美色中文字幕在线 | 国产办公室秘书无码精品99 | 亚洲人成网站在线播放942 | 国产高清不卡无码视频 | 国产精品爱久久久久久久 | 国产色视频一区二区三区 | 欧美自拍另类欧美综合图片区 | 成人无码精品1区2区3区免费看 | 日本精品久久久久中文字幕 | 国产内射老熟女aaaa | 国产sm调教视频在线观看 | 无码国产乱人伦偷精品视频 | 亚洲精品中文字幕久久久久 | 野外少妇愉情中文字幕 | 少妇无码吹潮 | 亚洲成在人网站无码天堂 | 亚洲国产欧美日韩精品一区二区三区 | 夜先锋av资源网站 | 精品人妻人人做人人爽 | 色噜噜亚洲男人的天堂 | 日本饥渴人妻欲求不满 | 色欲综合久久中文字幕网 | 国产高潮视频在线观看 | 又大又紧又粉嫩18p少妇 | 999久久久国产精品消防器材 | 久久www免费人成人片 | 精品国产aⅴ无码一区二区 | 久久综合激激的五月天 | 亚洲乱码中文字幕在线 | 中文字幕无码免费久久9一区9 | 国精产品一品二品国精品69xx | 一本久久a久久精品亚洲 | 麻豆精品国产精华精华液好用吗 | 久久久久久av无码免费看大片 | 亚洲а∨天堂久久精品2021 | 噜噜噜亚洲色成人网站 | 欧美丰满熟妇xxxx性ppx人交 | 5858s亚洲色大成网站www | 丝袜 中出 制服 人妻 美腿 | 中文无码精品a∨在线观看不卡 | 国产午夜视频在线观看 | 国内精品人妻无码久久久影院蜜桃 | 久久综合九色综合97网 | 国内精品久久毛片一区二区 | 粉嫩少妇内射浓精videos | 亚洲综合色区中文字幕 | 伊人色综合久久天天小片 | 青春草在线视频免费观看 | 亚洲男女内射在线播放 | 秋霞成人午夜鲁丝一区二区三区 | 一本久久a久久精品亚洲 | 亚洲人成影院在线观看 | 国产亚洲精品久久久久久 | 丰满人妻一区二区三区免费视频 | 成人一在线视频日韩国产 | 人妻少妇被猛烈进入中文字幕 | 午夜男女很黄的视频 | 国产免费观看黄av片 | 国产欧美亚洲精品a | 亚洲一区二区三区香蕉 | 国产人妻久久精品二区三区老狼 | 午夜时刻免费入口 | 久久综合香蕉国产蜜臀av | 欧美人与牲动交xxxx | 亚洲国产精华液网站w | 午夜福利电影 | 欧美自拍另类欧美综合图片区 | 呦交小u女精品视频 | 99久久精品国产一区二区蜜芽 | 亚洲精品久久久久avwww潮水 | 中文字幕 人妻熟女 | 女人和拘做爰正片视频 | 夜夜躁日日躁狠狠久久av | 97se亚洲精品一区 | 97无码免费人妻超级碰碰夜夜 | 日韩 欧美 动漫 国产 制服 | 国内老熟妇对白xxxxhd | 国产三级精品三级男人的天堂 | 午夜精品一区二区三区在线观看 | 国产麻豆精品精东影业av网站 | 国产激情综合五月久久 | 成人无码精品一区二区三区 | 午夜无码区在线观看 | 日韩精品无码一区二区中文字幕 | 东京一本一道一二三区 | 无码人妻丰满熟妇区毛片18 | 成人免费视频在线观看 | 天堂亚洲2017在线观看 | 青草视频在线播放 | a在线亚洲男人的天堂 | 天下第一社区视频www日本 | 免费乱码人妻系列无码专区 | 日本爽爽爽爽爽爽在线观看免 | 人人妻人人澡人人爽欧美精品 | 人妻少妇被猛烈进入中文字幕 | 福利一区二区三区视频在线观看 | 一本色道久久综合亚洲精品不卡 | 人妻互换免费中文字幕 | 男女超爽视频免费播放 | 男女爱爱好爽视频免费看 | 精品亚洲韩国一区二区三区 | 草草网站影院白丝内射 | 高潮喷水的毛片 | 无人区乱码一区二区三区 | 国产成人无码一二三区视频 | 色五月丁香五月综合五月 | 国产乱子伦视频在线播放 | 成年美女黄网站色大免费视频 | 久久精品国产大片免费观看 | 久久五月精品中文字幕 | 西西人体www44rt大胆高清 | 99麻豆久久久国产精品免费 | 欧美精品国产综合久久 | 久久久久久久久888 | 久久人人97超碰a片精品 | 亚洲春色在线视频 | 欧美国产日产一区二区 | 精品人妻av区 | 国产精品人人妻人人爽 | 无遮无挡爽爽免费视频 | 午夜精品一区二区三区在线观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久久久99精品国产片 | 99精品视频在线观看免费 | 久久精品视频在线看15 | 亚洲精品一区三区三区在线观看 | 熟女俱乐部五十路六十路av | 精品无码国产一区二区三区av | 九九热爱视频精品 | 欧美人与动性行为视频 | 熟妇激情内射com | 无码国产色欲xxxxx视频 | 午夜福利一区二区三区在线观看 | 欧美自拍另类欧美综合图片区 | 精品无码一区二区三区的天堂 | 狠狠cao日日穞夜夜穞av | 亚洲伊人久久精品影院 | 成人av无码一区二区三区 | 国产精品资源一区二区 | 久久久久免费看成人影片 | 99精品无人区乱码1区2区3区 | 成人精品视频一区二区三区尤物 | 精品国偷自产在线 | 日本乱偷人妻中文字幕 | 狠狠综合久久久久综合网 | 久久99精品国产.久久久久 | 久久久久99精品成人片 | 黑人粗大猛烈进出高潮视频 | 18禁黄网站男男禁片免费观看 | 中文字幕乱妇无码av在线 | 成人毛片一区二区 | 玩弄人妻少妇500系列视频 | 久久综合色之久久综合 | 国产精品va在线观看无码 | 国产午夜手机精彩视频 | 国产激情艳情在线看视频 | 久久久久久国产精品无码下载 | 中国大陆精品视频xxxx | 中文字幕精品av一区二区五区 | 成人女人看片免费视频放人 | 国产精品久久久久影院嫩草 | 欧美一区二区三区视频在线观看 | 老熟妇仑乱视频一区二区 | 免费国产成人高清在线观看网站 | 国产无遮挡又黄又爽免费视频 | 少妇无套内谢久久久久 | 在教室伦流澡到高潮hnp视频 | 午夜精品一区二区三区在线观看 | 永久免费精品精品永久-夜色 | 无码人中文字幕 | 国产精品无码久久av | 国产办公室秘书无码精品99 | 亚洲成av人片天堂网无码】 | 一本久道高清无码视频 | 亚洲男人av香蕉爽爽爽爽 | 日本饥渴人妻欲求不满 | 欧洲极品少妇 | 国产色xx群视频射精 | 国产精品高潮呻吟av久久 | 国产97人人超碰caoprom | 无码中文字幕色专区 | 国产成人精品三级麻豆 | 国产疯狂伦交大片 | 台湾无码一区二区 | 又大又黄又粗又爽的免费视频 | 中文精品无码中文字幕无码专区 | 骚片av蜜桃精品一区 | 女高中生第一次破苞av | 色综合久久88色综合天天 | 伊人久久婷婷五月综合97色 | 中文字幕日产无线码一区 | 丰满妇女强制高潮18xxxx | 欧美xxxxx精品 | 激情综合激情五月俺也去 | 国产精品igao视频网 | 老熟妇乱子伦牲交视频 | 欧美日韩综合一区二区三区 | 99国产精品白浆在线观看免费 | 久久99久久99精品中文字幕 | 久精品国产欧美亚洲色aⅴ大片 | 国产精品美女久久久网av | 欧美精品无码一区二区三区 | 日韩精品无码一区二区中文字幕 | 在教室伦流澡到高潮hnp视频 | 东京一本一道一二三区 | 国产精品免费大片 | 欧美日韩一区二区三区自拍 | 亚洲精品综合一区二区三区在线 | 国产成人综合美国十次 | 色综合久久中文娱乐网 | 国产69精品久久久久app下载 | 国产熟妇另类久久久久 | 国产精品无码一区二区桃花视频 | 少妇高潮一区二区三区99 | 久久精品一区二区三区四区 | 一个人看的www免费视频在线观看 | 两性色午夜视频免费播放 | 欧美日本精品一区二区三区 | 亚洲国产成人av在线观看 | 台湾无码一区二区 | 亚洲男人av香蕉爽爽爽爽 | 鲁大师影院在线观看 | 国产精品嫩草久久久久 | 国产精品欧美成人 | 国语自产偷拍精品视频偷 | 亚洲gv猛男gv无码男同 | 国产高潮视频在线观看 | 人妻aⅴ无码一区二区三区 | 国产激情无码一区二区 | 久久久久久久女国产乱让韩 | 国产av一区二区三区最新精品 | 国产农村乱对白刺激视频 | 色欲综合久久中文字幕网 | 午夜福利不卡在线视频 | 亚洲一区二区三区 | 日韩视频 中文字幕 视频一区 | 激情五月综合色婷婷一区二区 | 午夜福利试看120秒体验区 | 欧美老妇交乱视频在线观看 | 奇米影视7777久久精品人人爽 | 人妻少妇精品视频专区 | 国产精品久久久一区二区三区 | 国产精品无码成人午夜电影 | 亚洲人交乣女bbw | 国产激情无码一区二区app | 3d动漫精品啪啪一区二区中 | 偷窥村妇洗澡毛毛多 | 亚洲色大成网站www | 黑人巨大精品欧美一区二区 | 欧美人与物videos另类 | 国产性生交xxxxx无码 | 国产激情综合五月久久 | 蜜桃无码一区二区三区 | 在线天堂新版最新版在线8 | 国产凸凹视频一区二区 | 精品成在人线av无码免费看 | 亚洲精品国产a久久久久久 | 人妻人人添人妻人人爱 | 欧美黑人巨大xxxxx | 国语自产偷拍精品视频偷 | 久久综合给久久狠狠97色 | 奇米影视7777久久精品 | 亚洲爆乳精品无码一区二区三区 | 婷婷五月综合激情中文字幕 | 人妻aⅴ无码一区二区三区 | 99麻豆久久久国产精品免费 | 红桃av一区二区三区在线无码av | 色综合久久久无码中文字幕 | 麻豆国产丝袜白领秘书在线观看 | 野外少妇愉情中文字幕 | 无码任你躁久久久久久久 | 亚洲 欧美 激情 小说 另类 | 欧美日本日韩 | 最新国产乱人伦偷精品免费网站 | 国产97在线 | 亚洲 | 人妻体内射精一区二区三四 | 精品久久综合1区2区3区激情 | 亚洲熟悉妇女xxx妇女av | 日韩精品a片一区二区三区妖精 | 少妇性l交大片欧洲热妇乱xxx | 国产精品久久久久9999小说 | 亚洲人成影院在线观看 | 成人欧美一区二区三区 | 黑人玩弄人妻中文在线 | 成人三级无码视频在线观看 | 亚洲中文字幕无码中文字在线 | 国产精品免费大片 | 色偷偷人人澡人人爽人人模 | 国产无遮挡吃胸膜奶免费看 | 日韩人妻少妇一区二区三区 | 日本又色又爽又黄的a片18禁 | 夜夜高潮次次欢爽av女 | 未满成年国产在线观看 | 精品成人av一区二区三区 | 国产一区二区三区精品视频 | 亚洲一区二区三区偷拍女厕 | 亚洲色无码一区二区三区 | 亚洲毛片av日韩av无码 | 内射巨臀欧美在线视频 | 国产情侣作爱视频免费观看 | 无码人妻久久一区二区三区不卡 | 国语自产偷拍精品视频偷 | 中文字幕中文有码在线 | 亚洲а∨天堂久久精品2021 | 女人被男人躁得好爽免费视频 | 真人与拘做受免费视频一 | 男女猛烈xx00免费视频试看 | 国产激情综合五月久久 | 国产人妻久久精品二区三区老狼 | 300部国产真实乱 | 天天爽夜夜爽夜夜爽 | 国产乡下妇女做爰 | 精品夜夜澡人妻无码av蜜桃 | 久9re热视频这里只有精品 | 久久国产精品萌白酱免费 | 性欧美牲交xxxxx视频 | 欧美日韩在线亚洲综合国产人 | 奇米影视888欧美在线观看 | 男女爱爱好爽视频免费看 | a国产一区二区免费入口 | 色综合久久88色综合天天 | 奇米影视7777久久精品 | 精品国产一区av天美传媒 | 色老头在线一区二区三区 | 真人与拘做受免费视频 | 偷窥日本少妇撒尿chinese | 亚洲va欧美va天堂v国产综合 | 人人妻人人澡人人爽欧美精品 | 国产精品永久免费视频 | a片免费视频在线观看 | 国产亚洲精品久久久久久久 | 亚洲狠狠婷婷综合久久 | 日日摸日日碰夜夜爽av | 亚洲中文字幕无码中字 | 成人免费视频视频在线观看 免费 | 内射欧美老妇wbb | 最新国产麻豆aⅴ精品无码 | 亚洲成a人片在线观看无码 | 亚拍精品一区二区三区探花 | 老司机亚洲精品影院 | 无码成人精品区在线观看 | 水蜜桃色314在线观看 | 欧美成人家庭影院 | 日韩精品乱码av一区二区 | av在线亚洲欧洲日产一区二区 | 无码av中文字幕免费放 | 日韩少妇内射免费播放 | 强伦人妻一区二区三区视频18 | 天堂а√在线中文在线 | 日本www一道久久久免费榴莲 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 青青青爽视频在线观看 | 动漫av一区二区在线观看 | 国产成人精品一区二区在线小狼 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲熟妇色xxxxx亚洲 | 久久综合激激的五月天 | 亚洲熟女一区二区三区 | 亚洲综合色区中文字幕 | 精品国产青草久久久久福利 | 国产三级久久久精品麻豆三级 | 国产亚洲精品精品国产亚洲综合 | 天下第一社区视频www日本 | 中文无码成人免费视频在线观看 | 狂野欧美性猛xxxx乱大交 | 丝袜美腿亚洲一区二区 | 国精产品一区二区三区 | 无码人妻av免费一区二区三区 | 免费网站看v片在线18禁无码 | 少妇邻居内射在线 | 国产香蕉尹人视频在线 | 亚洲欧美精品伊人久久 | 国产精品久久久一区二区三区 | 久久久久久av无码免费看大片 | 国产精品第一区揄拍无码 | 性欧美videos高清精品 | 成在人线av无码免费 | 无码精品人妻一区二区三区av | 欧美xxxxx精品 | 中文字幕无码免费久久99 | 99精品国产综合久久久久五月天 | a在线亚洲男人的天堂 | 亚洲а∨天堂久久精品2021 | 日日麻批免费40分钟无码 | 日本一区二区更新不卡 | 精品一二三区久久aaa片 | 国产性生交xxxxx无码 | 国产精品美女久久久网av | 久久精品国产亚洲精品 | 人人妻人人澡人人爽欧美精品 | 天天燥日日燥 | 中文字幕乱妇无码av在线 | 波多野结衣一区二区三区av免费 | 一本久道久久综合狠狠爱 | 亚洲爆乳无码专区 | 亚洲综合色区中文字幕 | 国产欧美熟妇另类久久久 | 国产成人人人97超碰超爽8 | 久久综合给合久久狠狠狠97色 | 内射白嫩少妇超碰 | 国产人妻精品一区二区三区 | 亚洲日本va中文字幕 | 女人被男人躁得好爽免费视频 | 日韩亚洲欧美精品综合 | 少妇激情av一区二区 | 高清国产亚洲精品自在久久 | 精品无码一区二区三区爱欲 | 性生交片免费无码看人 | 人妻少妇精品久久 | 蜜臀av无码人妻精品 | 伊人色综合久久天天小片 | 亚洲中文字幕久久无码 | 日本精品高清一区二区 | 欧美猛少妇色xxxxx | 青青青爽视频在线观看 | 免费国产成人高清在线观看网站 | 免费无码午夜福利片69 | 午夜时刻免费入口 | 亚洲成a人片在线观看日本 | 人妻体内射精一区二区三四 | 国精品人妻无码一区二区三区蜜柚 | 蜜桃av抽搐高潮一区二区 | 亚洲精品国产品国语在线观看 | 国产高清av在线播放 | 国产精品无码mv在线观看 | 东京一本一道一二三区 | 午夜精品久久久久久久 | 精品人妻人人做人人爽夜夜爽 | 欧美xxxx黑人又粗又长 | 啦啦啦www在线观看免费视频 | 在线成人www免费观看视频 | 丰满少妇女裸体bbw | 亚洲国产欧美国产综合一区 | 亚洲乱码国产乱码精品精 | 国产美女精品一区二区三区 | 伊人久久大香线蕉av一区二区 | 久久久www成人免费毛片 | 国产网红无码精品视频 | 俺去俺来也在线www色官网 | 日韩精品无码一本二本三本色 | 伊人久久大香线蕉av一区二区 | 国产午夜亚洲精品不卡下载 | 亚洲阿v天堂在线 | 久久久久99精品国产片 | 少妇人妻偷人精品无码视频 | 国产精品久久久久久亚洲影视内衣 | 亚洲 高清 成人 动漫 | 久久人人爽人人爽人人片ⅴ | 俺去俺来也在线www色官网 | 欧美日韩一区二区免费视频 | 成年女人永久免费看片 | 欧美丰满老熟妇xxxxx性 | 日本在线高清不卡免费播放 | 无人区乱码一区二区三区 | 国产午夜手机精彩视频 | 亚洲色成人中文字幕网站 | 无码人妻出轨黑人中文字幕 | √天堂中文官网8在线 | 中文字幕无码乱人伦 | 国产免费久久精品国产传媒 | 在线播放亚洲第一字幕 | 亚洲 激情 小说 另类 欧美 | 黑人玩弄人妻中文在线 | 国产精品丝袜黑色高跟鞋 | 亚洲精品久久久久avwww潮水 | 亚洲欧美日韩成人高清在线一区 | 欧美 丝袜 自拍 制服 另类 | 亚洲综合色区中文字幕 | 免费播放一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 国产精品无码永久免费888 | 无码帝国www无码专区色综合 | 色婷婷久久一区二区三区麻豆 | 性生交片免费无码看人 | 久久久久久a亚洲欧洲av冫 | 人人妻人人澡人人爽欧美一区九九 | 国内丰满熟女出轨videos | 99精品无人区乱码1区2区3区 | 永久黄网站色视频免费直播 | 免费视频欧美无人区码 | 亚洲国产高清在线观看视频 | 乱人伦人妻中文字幕无码久久网 | 国产乱子伦视频在线播放 | 国产人妻精品一区二区三区不卡 | 久久99精品久久久久久动态图 | 精品久久综合1区2区3区激情 | 亚洲精品久久久久久久久久久 | 欧美日本日韩 | 成人毛片一区二区 | 国产女主播喷水视频在线观看 | 又粗又大又硬又长又爽 | 中文字幕无码免费久久9一区9 | 亚洲成熟女人毛毛耸耸多 | 中文字幕 人妻熟女 | 成人女人看片免费视频放人 | 俺去俺来也www色官网 | 久久国语露脸国产精品电影 | 国产午夜亚洲精品不卡 | 少妇一晚三次一区二区三区 | 亚洲中文字幕在线无码一区二区 | 欧美人与动性行为视频 | 色窝窝无码一区二区三区色欲 | 精品夜夜澡人妻无码av蜜桃 | 国产精品嫩草久久久久 | 国产av一区二区精品久久凹凸 | 大地资源网第二页免费观看 | 东京热一精品无码av | aⅴ在线视频男人的天堂 | 成 人 免费观看网站 | 午夜嘿嘿嘿影院 | 国产精品对白交换视频 | 天天摸天天碰天天添 | 蜜桃臀无码内射一区二区三区 | 免费人成在线视频无码 | 亚洲a无码综合a国产av中文 | 少妇性俱乐部纵欲狂欢电影 | 未满成年国产在线观看 | 中国女人内谢69xxxxxa片 | 最新版天堂资源中文官网 | 国产精品对白交换视频 | 亚洲va欧美va天堂v国产综合 | 少妇太爽了在线观看 | 免费视频欧美无人区码 | 3d动漫精品啪啪一区二区中 | 色偷偷人人澡人人爽人人模 | 国产又爽又黄又刺激的视频 | 国产黄在线观看免费观看不卡 | 日本又色又爽又黄的a片18禁 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产农村妇女高潮大叫 | 国产卡一卡二卡三 | 强辱丰满人妻hd中文字幕 | 扒开双腿疯狂进出爽爽爽视频 | 国产熟妇另类久久久久 | 扒开双腿疯狂进出爽爽爽视频 | 99久久人妻精品免费一区 | 18无码粉嫩小泬无套在线观看 | 国产偷国产偷精品高清尤物 | 国产一区二区三区日韩精品 | 又大又黄又粗又爽的免费视频 | 一区二区三区乱码在线 | 欧洲 | 午夜精品一区二区三区在线观看 | 欧美大屁股xxxxhd黑色 | 精品偷拍一区二区三区在线看 | 精品无人区无码乱码毛片国产 | 对白脏话肉麻粗话av | 国产精品成人av在线观看 | √天堂中文官网8在线 | 永久免费观看国产裸体美女 | 少妇性俱乐部纵欲狂欢电影 | 精品人妻人人做人人爽夜夜爽 | 久久人人爽人人爽人人片ⅴ | 久久人人爽人人爽人人片av高清 | 无码任你躁久久久久久久 | 97夜夜澡人人双人人人喊 | 国产口爆吞精在线视频 | 无码毛片视频一区二区本码 | 亚洲色在线无码国产精品不卡 | 亚洲国产精品久久久久久 | 未满小14洗澡无码视频网站 | 免费视频欧美无人区码 | 成年美女黄网站色大免费全看 | 欧美人与禽zoz0性伦交 | 欧美35页视频在线观看 | 日韩精品无码一本二本三本色 | 久久99热只有频精品8 | 人妻人人添人妻人人爱 | 兔费看少妇性l交大片免费 | 久久久婷婷五月亚洲97号色 | 亚洲第一无码av无码专区 | 久久国产精品精品国产色婷婷 | 国产精品人人妻人人爽 | 国产精品va在线播放 | 真人与拘做受免费视频 | 日本精品久久久久中文字幕 | 国产精品久久久久影院嫩草 | 国产精品理论片在线观看 | 国产成人无码午夜视频在线观看 | 亚无码乱人伦一区二区 | 东京一本一道一二三区 | 久激情内射婷内射蜜桃人妖 | 国产精品高潮呻吟av久久4虎 | 日本护士毛茸茸高潮 | 人妻与老人中文字幕 | 欧美 亚洲 国产 另类 | 亚洲男人av香蕉爽爽爽爽 | 亚洲va中文字幕无码久久不卡 | 草草网站影院白丝内射 | 精品乱码久久久久久久 | 国产精品对白交换视频 | 东京热一精品无码av | 99精品无人区乱码1区2区3区 | 四虎国产精品一区二区 | 日本熟妇人妻xxxxx人hd | 久久国产精品偷任你爽任你 | 久久精品国产一区二区三区 | 国产人成高清在线视频99最全资源 | 国产精品国产自线拍免费软件 | 国产免费观看黄av片 | 亚洲精品鲁一鲁一区二区三区 | 亚洲中文无码av永久不收费 | 无套内射视频囯产 | 亚洲中文字幕无码中字 | 国产激情综合五月久久 | 日本丰满护士爆乳xxxx | 两性色午夜免费视频 | 国产成人综合在线女婷五月99播放 | 蜜桃视频插满18在线观看 | 在线精品国产一区二区三区 | 国产日产欧产精品精品app | 国内老熟妇对白xxxxhd | 久久精品国产大片免费观看 | 亚洲欧美日韩成人高清在线一区 | 无码人妻久久一区二区三区不卡 | 国产精品第一区揄拍无码 | 国产无遮挡吃胸膜奶免费看 | 男女爱爱好爽视频免费看 | 成人女人看片免费视频放人 | 亚洲欧美日韩综合久久久 | 久久国内精品自在自线 | 欧美xxxx黑人又粗又长 | 亚洲精品成a人在线观看 | 亚洲乱码日产精品bd | 狠狠亚洲超碰狼人久久 | 亚洲成a人片在线观看日本 | 久久精品国产99精品亚洲 | 日产精品高潮呻吟av久久 | 精品国产一区av天美传媒 | 免费人成在线视频无码 | 国产办公室秘书无码精品99 | 国产香蕉尹人综合在线观看 | 国产xxx69麻豆国语对白 | 久久www免费人成人片 | 精品成在人线av无码免费看 | 巨爆乳无码视频在线观看 | 免费无码肉片在线观看 | 男人扒开女人内裤强吻桶进去 | 日韩精品无码一本二本三本色 | 无码一区二区三区在线 | 免费无码一区二区三区蜜桃大 | 欧美性色19p | 日日碰狠狠丁香久燥 | 国产后入清纯学生妹 | 色综合天天综合狠狠爱 | 天天做天天爱天天爽综合网 | 精品久久久中文字幕人妻 | 午夜熟女插插xx免费视频 | 亚洲综合精品香蕉久久网 | 精品偷拍一区二区三区在线看 | 精品偷自拍另类在线观看 | 精品熟女少妇av免费观看 | 色情久久久av熟女人妻网站 | 久久zyz资源站无码中文动漫 | 国内揄拍国内精品人妻 | 日欧一片内射va在线影院 | 澳门永久av免费网站 | 狠狠色噜噜狠狠狠7777奇米 | av无码久久久久不卡免费网站 | 亚洲国产成人a精品不卡在线 | 日韩欧美群交p片內射中文 | 欧洲熟妇精品视频 | 在线欧美精品一区二区三区 | 久久亚洲精品成人无码 | 蜜桃视频插满18在线观看 | 国产人妻精品午夜福利免费 | 国产肉丝袜在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久久久亚洲精品男人的天堂 | 午夜福利试看120秒体验区 | 99久久久无码国产aaa精品 | 国产香蕉尹人综合在线观看 | 国产精品亚洲一区二区三区喷水 | 少妇久久久久久人妻无码 | 久久97精品久久久久久久不卡 | 亚洲小说图区综合在线 | 精品国产青草久久久久福利 | 国产精品.xx视频.xxtv | а√资源新版在线天堂 | 精品久久久无码人妻字幂 | 日产国产精品亚洲系列 | 中文字幕无码av激情不卡 | 国产欧美精品一区二区三区 | 国产成人亚洲综合无码 | 亚洲a无码综合a国产av中文 | 青青草原综合久久大伊人精品 | 99riav国产精品视频 | 国产色视频一区二区三区 | 欧美日韩视频无码一区二区三 | 永久免费观看国产裸体美女 | 无码任你躁久久久久久久 | 日本在线高清不卡免费播放 | 国产精品久久久久久亚洲毛片 | 亚洲国产精品一区二区第一页 | 免费播放一区二区三区 | 国产精品久久久一区二区三区 | 欧美日韩一区二区综合 | 色综合久久网 | 天天拍夜夜添久久精品 | 黑人巨大精品欧美黑寡妇 | 激情爆乳一区二区三区 | 午夜福利一区二区三区在线观看 | 久久国产精品精品国产色婷婷 | 正在播放东北夫妻内射 | yw尤物av无码国产在线观看 | 免费国产成人高清在线观看网站 | 理论片87福利理论电影 | 九月婷婷人人澡人人添人人爽 | 老太婆性杂交欧美肥老太 | 亚洲精品午夜无码电影网 | 国产一区二区三区影院 | 欧美性猛交xxxx富婆 | 宝宝好涨水快流出来免费视频 | 国产av无码专区亚洲awww | 成人性做爰aaa片免费看不忠 | 麻豆精品国产精华精华液好用吗 | 久久精品无码一区二区三区 | 中文字幕+乱码+中文字幕一区 | 成人免费无码大片a毛片 | 亚洲七七久久桃花影院 | 午夜无码区在线观看 | 亚洲男人av香蕉爽爽爽爽 | 无码国内精品人妻少妇 | 少妇被黑人到高潮喷出白浆 | 久久国产精品精品国产色婷婷 | 大地资源中文第3页 | 漂亮人妻洗澡被公强 日日躁 | 欧美精品一区二区精品久久 | 国产内射老熟女aaaa | 国产黑色丝袜在线播放 | √天堂中文官网8在线 | 久久精品国产99久久6动漫 | 亚洲中文字幕无码中字 | 久久99久久99精品中文字幕 | 未满成年国产在线观看 | 精品国偷自产在线 | 99久久精品午夜一区二区 | 久久国产精品萌白酱免费 | 中文无码伦av中文字幕 | 国产免费久久精品国产传媒 | 色综合视频一区二区三区 | 国产精品人妻一区二区三区四 | 蜜臀av无码人妻精品 | 97夜夜澡人人爽人人喊中国片 | 精品国产一区二区三区四区在线看 | 老熟妇乱子伦牲交视频 | 国产精品无码mv在线观看 | 国产69精品久久久久app下载 | 欧美老妇与禽交 | 天天爽夜夜爽夜夜爽 | 国产一区二区三区影院 | 国产午夜精品一区二区三区嫩草 | 久久成人a毛片免费观看网站 | 久9re热视频这里只有精品 | 青青久在线视频免费观看 | 亚洲一区二区三区在线观看网站 | a片免费视频在线观看 | 亚洲中文无码av永久不收费 | 爆乳一区二区三区无码 | 撕开奶罩揉吮奶头视频 | 久久人人爽人人爽人人片av高清 |