美文网首页
ftp客户端实现(二)

ftp客户端实现(二)

作者: zzkdev | 来源:发表于2018-02-11 23:35 被阅读0次

客户端登陆ftp服务器

流程

  1. 与ftp服务器建立连接
  2. 发送用户名和密码
  3. 使服务器进入被动模式

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>

int cmd_send(SOCKET sock, char *cmd)
{
    char readbuf[512];
    int i = 0, ret;
    send(sock, cmd, strlen(cmd), 0);
    while(1)
    {
        recv(sock, &readbuf[i], 1, 0);
        if(readbuf[i] == '\n')
        {
            readbuf[++i] = '\0';
            break;
        }
        i++;
    }
    sscanf(readbuf, "%d", &ret);
    printf("%s", readbuf);
    return ret;
}

SOCKET login_ftp(char *user, char *pwd, char *server_ip)
{
    char cmd[512] = {0};
    char readbuf[512] = {0};
    SOCKET sock_client = socket(PF_INET, SOCK_STREAM, 0);

    struct sockaddr_in server_addr;
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(21);
    server_addr.sin_addr.s_addr = inet_addr(server_ip);

    if(connect(sock_client, (SOCKADDR *)&server_addr, sizeof(server_addr)) < 0)
    {
        printf("connect error\n");
        return 0;
    }
    recv(sock_client, readbuf, sizeof(readbuf), 0);
    printf("%s", readbuf);
    sprintf(cmd, "USER %s\r\n", user);
    cmd_send(sock_client, cmd);
    sprintf(cmd, "PASS %s\r\n", pwd);
    cmd_send(sock_client, cmd);
    return sock_client;
}

int main()
{
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);

    char user[255], pwd[255], server_ip[255];
    SOCKET sock_client;

    printf("welcom to ftp_client\n");
    printf("input ip: ");
    scanf("%s", server_ip);
    printf("input user: ");
    scanf("%s", user);
    printf("input password: ");
    scanf("%s", pwd);

    sock_client = login_ftp(user, pwd, server_ip);
    closesocket(sock_client);
    WSACleanup();

    return 0;
}

简单代码解释

cmd_send函数用来发送命令并返回响应码,打印ftp服务器返回的信息
login_ftp函数来登陆服务器并返回socket
USER指令用来输入用户名(anonymous用户名为匿名登陆)
PASS指令用来输入密码
strlen(cmd)那行画重点。。好像不能多传,传了会出错,有多少传多少,具体原因未知


一个星期了!!第七篇~~哎太困了写不下了今天


我看见你,却试图不去看你。你来到我面前,我却闭上眼睛。——保罗·乔尔达诺


给我点十个赞我就买杯可乐庆祝下


相关文章

  • ftp客户端实现(二)

    客户端登陆ftp服务器 流程 与ftp服务器建立连接 发送用户名和密码 使服务器进入被动模式 代码实现 简单代码解...

  • [雪峰磁针石博客]python模块介绍-ftplib:FTP协议

    概述 该模块定义了FTP类和一些相关项。FTP类实现了FTP协议的客户端。你可以用它来编写使用FTP的URL。有关...

  • exportfs命令、NFS客户端问题、FTP介绍、使用vsft

    目录 一 、exportfs命令二、NFS客户端问题三、FTP介绍四、使用vsftpd搭建ftp 一 、expor...

  • ftplib模块

    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载...

  • python生成简单的FTP弱口令扫描

    前言 Ftp这个类实现了Ftp客户端的大多数功能,比如连接Ftp服务器、查看服务器中的文件、上传、下载文件等功能,...

  • python 实现nntp客户端

    与ftp客户端实现方式一样python在编写nntp客户端是需要倒入nntplib如from nntplib im...

  • ftp客户端实现(一)

    前置知识 ftp学习资料ftp命令: 下面是ftp响应码: 配置测试环境 由于是在windows上测试所以决定在w...

  • python 实现ftp客户端

    ftp客户端交互流程如下: 客户端连接远程服务器 客户端输入用户名、密码 客户端做各种文件传输和信息查询操作 客户...

  • ftp服务搭建与使用

    一 ftp服务器搭建 安装vsftpd软件(用于文件的上传和下载) 修改配置文件 重启服务 二 ftp客户端使用 ...

  • 文件服务-FTP服务器

    FTP文件服务器FTP介绍应用场景FTP的权限FTP的工作模式FTP安装部署FTP配置文件FTP客户端访问基于虚拟...

网友评论

      本文标题:ftp客户端实现(二)

      本文链接:https://www.haomeiwen.com/subject/bfcltftx.html