簡體   English   中英

linux'500''上的ftp客戶端:命令不被理解。 '

[英]ftp client on linux '500 '': command not understood. '

我嘗試使簡單的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客戶端)進行連接並且可以正常工作,但是該客戶端中的程序包看起來與我自己的客戶端中的程序包相同。 有任何想法嗎?

因此,我發現了一個錯誤:strlen(username)而不是strlen(username)+1。 希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM