• 大小: 13KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: 其他
  • 标签: FTP协议  

资源简介

利用winsock编程来实现FTP协议客户端,使用的FTP服务器为Filezilla,测试是在本机实现。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include

//添加库文件
#pragma comment(lib“ws2_32.lib“)

//定义缓冲区大小和发送、接收缓冲区
#define MAX_BUFF_SIZE 8196
char recv_buf[MAX_BUFF_SIZE];
char send_buf[MAX_BUFF_SIZE];
int rflagsflag;

//函数声明
int menu(); 
int ConnectServer();
int ChooseNextOperation(SOCKET control_sock);
int menu1();
int cmd(SOCKET control_sock);
int size(SOCKET control_sock);
int download(SOCKET control_sock);
int quit(SOCKET control_sock);
int pwd(SOCKET control_sock);


void main()  //功能主函数  
{   

     for(;;)  
         switch(menu())  
     {case 1:ConnectServer();                                
 getch();  
             break;  
      
      case 2:system(“cls“);    
              printf(“下载器已关闭,按任意键退出 :)\n“);  
              exit(0);  
     }  
}  

int menu()     
{  
    int n;     
    system(“title FTP文件下载器“);
system(“color 8f“);
system(“mode con cols=80 lines=37“);   
    system(“cls“);    
    printf(“\n“);  
    printf(“              ===============================================               \n“);  
    printf(“              ||                                            ||              \n“);  
    printf(“              ||                FTP 文件下载器              ||              \n“);  
    printf(“              ||                                            ||              \n“);  
    printf(“              ||                 选 择 操 作                ||              \n“);  
    printf(“              ||                                            ||              \n“);  
    printf(“              ||                  1:登录服务器              ||              \n“);  
    printf(“              ||                  2:退出                    ||              \n“);  
    printf(“              ===============================================               \n“);  
    printf(“                           请输入序号进行操作:“);  
scanf(“%d“&n);  
    return n;  
}

int ConnectServer()
{
     WSADATA wsaData;

SOCKET control_sock; //控制套接字
struct sockaddr_in server;
char username[10]password[10];
SOCKET data_sock; //数据套接字
//SOCKET conn_sock; //侦听套接字
struct sockaddr_in client;
   //struct sockaddr_in client_addr;
//int file_handel;
//char filename[10];



WSAStartup(MAKEWORD(22)&wsaData);
//客户端连接到FTP服务器端

//struct hostent *hp;

memset(&server 0 sizeof(struct sockaddr_in));
 
/* 初始化socket */
control_sock = socket(AF_INET SOCK_STREAM 0);
//hp = gethostbyname(“127.0.0.1“);
//memcpy(&server.sin_addr hp->h_addr hp->h_length);
server.sin_family = AF_INET;
server.sin_port = htons(21);
server.sin_addr.s_addr = inet_addr(“127.0.0.1“);
 
/* 连接到服务器端 */
if(connect(control_sock(struct sockaddr *)&server sizeof(server))==SOCKET_ERROR)
{
printf(“无法连接服务器“);
}
else
printf(“控制端口连接服务器成功!\n“);


/* 客户端接收服务器端的一些欢迎信息 */
memset(recv_buf0sizeof(recv_buf));
rflag =

评论

共有 条评论