插槽FTP客户端登录问题

时间:2013-11-03 19:27:41

标签: c++ sockets ftp solaris

EDITED

我正在制作一个C ++程序,用于连接我学校的FTP服务器,并允许我从我的帐户中获取文件。没有什么可复杂的,但我继续遇到530返回代码。我首先在端口21(FTP命令端口)上建立套接字并发送USER xxxxx然后我得到一个220代码响应,说我已连接到111.111.111,接下来我将发送用户命令PASS xxxxx ,但密码未被接受,我收到331代码

以下是运行以下代码的终端:

>./FTP
FTP: USER xxxxx
FTP: 220 csci2.stcloudstate.edu FTP server ready.
FTP: PASS xxxxx
FTP: 331 Password required for xxxxx.
 ready.
FTP: PASS xxxxx
FTP: 530 Please login with USER and PASS.
ready.
>

我想我的命令没有正确的格式,所以下面是代码如果有人看到我的用户/密码输入错误的地方。

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <iostream>
using namespace std;

int main(void)
{
        //variables
    struct sockaddr_in stSockAddr;
    int Res;
    char buff[60];
    char UserFeed[30];
    int SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    string FTPread;
    string FtpCommand;
        ...
    memset(&stSockAddr, 0, sizeof(stSockAddr)); 
    stSockAddr.sin_family = AF_INET;
    stSockAddr.sin_port = htons(21);
        ...

    //Enter USER xxxxxx
    cout<<"FTP: ";
    fgets(UserFeed,30,stdin);
    write(SocketFD, UserFeed, strnln(UserFeed));
    recv(SocketFD,buff,sizeof(buff),0);
    cout<<"FTP: "<<buff;

    //Enter PASS xxxxxxxx
    cout<<"FTP: ";
    fgets(UserFeed,30,stdin);
    write(SocketFD, UserFeed, strnln(UserFeed));
    recv(SocketFD,buff,sizeof(buff),0);
    cout<<"FTP: "<<buff;
        ...
}

*注意:这是使用berkeley套接字,FTP将是被动模式(因此还没有数据连接),并且这是从与FTP服务器相同的网络上的solaris系统编码/编译/运行。

0 个答案:

没有答案