下面是一个FTP的程序,我在本机上用serv-u创建了一个FTP站点,并且启动了serv-u,服务器也正在运行.本程序是做一个服务器连接,但程序显示"连接服务器失败!",我又这样测试了一下,我另写了一个服务端程序,启动服务端后再运行本程序,程序显示"服务器连接成功!",为什么呢?难道FTP编程还要写一个服务端吗?
#include "stdafx.h"
#include "FTPClient.h"
#include <winsock2.h>
#include <afxsock.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <vector>
#include <string>UINT SERVER_LISTEN_PORT=9001;
char SERVER_IP[16]="127.0.0.1"; //FTP服务器地址
char MY_IP[16]="127.0.0.1"; //本地SOCKET commSock; //控制连接Socket
std::vector<std::string> DIRArray; //当前工作路径中的所有的目录
std::vector<std::string> FILEArray;//当前工作路径中的所有的文件
std::vector<long> LENGTHArray;    //当前工作路径中所有文件的长度//辅助函数
int Connect();
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
std::string str;
char ch;#ifndef RAW_SOCKET
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr << _T("Fatal Error: MFC initialization failed") << endl;
return 1;
}
#endif if(inet_addr(argv[1])==INADDR_NONE)
{
WSADATA data;
if(WSAStartup(MAKEWORD(2,2),&data)!=0)
return 0;
hostent * host=gethostbyname((const char *)argv[1]);
if(host==NULL)
{
cerr<<"Error IP."<<endl;
return 0;
}
sockaddr_in serverAddr;
serverAddr.sin_addr.S_un.S_addr=htonl(ntohl((*(struct in_addr*)host->h_addr).S_un.S_addr));
strcpy(SERVER_IP,inet_ntoa(serverAddr.sin_addr));
}
else
strcpy(SERVER_IP,argv[1]);
if(argc==3)
SERVER_LISTEN_PORT=atoi(argv[2]);

if(Connect()!=0)
return 0;

return 0;
}
int Connect()
{
WSADATA wsaData;
sockaddr_in serverAddr;
char buffer[BUFFER_BLOCK_SIZE+1];
int retCode;
std::string str;
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
cerr<<"套接初始化失败!";
return -1;
}
commSock=socket(AF_INET,SOCK_STREAM,0);
serverAddr.sin_addr.S_un.S_addr=inet_addr(SERVER_IP);
serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons(SERVER_LISTEN_PORT);
//连接服务器
if(connect(commSock,(const sockaddr*)&serverAddr,sizeof(sockaddr))==SOCKET_ERROR)
{
cerr<<"服务器连接失败!"<<endl;
closesocket(commSock);
return -1;
}
else
{
cerr<<"服务器连接成功!"<<endl;
return 1;
} return retCode;
}

解决方案 »

  1.   

    没有人知道吗?FTP程序只写一个客户端吧.但是必须连接到了服务器后才能向FTP站点发送各种FTP命令,进行文件上传下载.可只有一个客户端又怎么连接到FTP服务器呀.
      

  2.   

    可是我就是只写了一个客户端就可以了阿
    你的服务器的FTP配置好了么?
    我在win2003的服务器上建立了一个FTP服务
    然后就只写客户端的程序就好了
      

  3.   

    FTP应该配置好了,我用FTP软件登陆都能成功登陆.但是直接在浏览器中输入FTP地址不能登陆,为什么呢?请问一下,FTP的RFC文件是什么文件,在哪里哦.它里要怎样配置?