【问题标题】:ftp client on linux '500 '': command not understood. 'linux '500'' 上的 ftp 客户端:命令不理解。 '
【发布时间】:2012-11-08 16:23:46
【问题描述】:

我尝试制作简单的 ftp 客户端来获取 bsd 套接字上的文件列表。这里是:

connectTo(int client_socket, 
              struct sockaddr_in* addr,
              char* ipv4Address,
              char* user,
              char* password,
              char* response) // buffer wchich store responses
{
    client_socket = socket(AF_INET, SOCK_STREAM, 0);
    if(socket < 0)
    {
        printf("Can not create socket");
        return 2;
    }

    addr->sin_family = AF_INET; // address family - internet socket
    addr->sin_port = htons(PORT_NUMBER);
    addr->sin_addr.s_addr = inet_addr(ipv4Address);
    if(connect(client_socket,(struct sockaddr*)addr,sizeof(*addr)) < 0)
    {
        printf("Can not connect!\n");
        return 3;
    }

    int size_read = recv(client_socket, response, BUF_SIZE, 0);

        printf("size_read = %d\n",size_read);
        response[size_read] = '\0'; // for not printing rubbish
        printf("%s\n",response);

    printf("sending username\n");
    char *username = strdup("USER trenkinan\r\n");
    send(client_socket,username,strlen(username)+1,0);


    size_read = recv(client_socket, response, BUF_SIZE, 0);

   //     printf("size_read = %d\n",size_read);
        response[size_read] = '\0'; // for not printing rubbish
        printf("%s",response);
    if(strstr(response,"331"))
    {
        //printf("sending password\n");
        char *passwd = strdup("PASS test\r\n");

       // printf("passwd string: %s",passwd);
        int sent = send(client_socket,passwd,strlen(passwd)+1,0);
        size_read = recv(client_socket, response, BUF_SIZE, 0);
        response[size_read] = '\0'; // for not printing rubbish
        printf("%s",response);

        //printf("sent bytes: %d\n", sent); 
    }

    return 0;
}

我在我的工作站上使用来自 debian 存储库 (ftpd) 的 ftp 服务器。我尝试执行此代码,当我发送密码服务器时回答 500 '':命令不理解。 我使用wireshark查看发生了什么,我的程序中的所有包看起来都很好,我使用ftp命令(linux上的轻量级ftp客户端)进行连接,它可以工作,但来自该客户端的包看起来与我自己的客户端相同。有什么想法吗?

【问题讨论】:

    标签: linux ftp berkeley-sockets


    【解决方案1】:

    所以,我发现了一个错误:strlen(username) 而不是 strlen(username)+1。我希望它会对某人有所帮助。

    【讨论】:

    • 哦,伙计也有类似的问题,你的问题帮助我找到了我的错误 =)
    猜你喜欢
    • 2019-12-31
    • 2015-06-14
    • 2017-04-14
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 2011-11-12
    相关资源
    最近更新 更多