• 大小: 2.5MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-17
  • 语言: 其他
  • 标签: 课程设计  

资源简介

Linux课设,实现ftp服务器和客户端,内含详细问题说明文档和资料以及报告代码

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “ftp.h“

#define DEFAULT_FTP_PORT 21

extern int h_errno;
char user[64]; 
char passwd[64];

//服务器地址
struct sockaddr_in ftp_server local_host;
struct hostent * server_hostent;

int sock_control;

int mode = 1; //0为主动,1被动
static struct termios stored_settings;
void cmd_err_exit(char * err_msg int err_code)
{
printf(“%s\n“ err_msg);
exit(err_code);
}

int fill_host_addr(char * host_ip_addr struct sockaddr_in * host int port)
{
if(port <= 0 || port > 65535) 
return 254;
bzero(host sizeof(struct sockaddr_in));
host->sin_family = AF_INET;
        if(inet_addr(host_ip_addr) != -1)
{
                host->sin_addr.s_addr = inet_addr(host_ip_addr);
}
        else 
{
if((server_hostent = gethostbyname(host_ip_addr)) != 0)
{
memcpy(&host->sin_addr server_hostent->h_addr\
        sizeof(host->sin_addr));
}
        else return 253;
}
        host->sin_port = htons(port);
return 1;
}

int xconnect(struct sockaddr_in *s_addr int type)
{
struct timeval outtime;
int set;
int s = socket(AF_INET SOCK_STREAM 0);
if(s < 0)
cmd_err_exit(“creat socket error!“ 249);

if(type == 1)
{
outtime.tv_sec = 0;
outtime.tv_usec = 300000;    //0.3s
}
else
{
outtime.tv_sec = 5;
outtime.tv_usec = 0;        //5s
}
set = setsockopt(s SOL_SOCKETSO_RCVTIMEO &outtimesizeof(outtime));
if(set !=0)
{
printf(“set socket %s errno:%d\n“strerror(errno)errno);
cmd_err_exit(“set socket“ 1);
}

//connect to the server
if (connect(s(struct sockaddr *)s_addrsizeof(struct sockaddr_in)) < 0)
{
printf(“Can‘t connect to server %s and port %d\n“\
inet_ntoa(s_addr->sin_addr)ntohs(ftp_server.sin_port));
exit(252);
}
return s;
}

int ftp_send_cmd(const char *s1 const char *s2 int sock_fd)
{
char send_buf[256];
int send_err len;
if(s1) 
{
strcpy(send_bufs1);
if(s2)
{
strcat(send_buf s2);
strcat(send_buf“\r\n“);
len = strlen(send_buf);
send_err = send(sock_fd send_buf len 0);
}
else 
{
strcat(send_buf“\r\n“);
len = strlen(send_buf);
send_err = send(sock_fd send_buf len 0);
}
     }
if(send_err < 0)
printf(“send error!\n“);
return send_err;
}

int ftp_get_reply(int sock_fd)
{
static int reply_code = 0count=0;
char rcv_buf[512];
count=read(sock_fd rcv_buf 510);
if(count > 0)
reply_code = atoi(rcv_buf);
else
return 0;
while(1)
{
if(count <= 0)
break;
rcv_buf[count]=‘\0‘;
printf(“%s“rcv_buf);
count=read(sock_fd rcv_buf 510);
}
return reply_code;
}

int get_port()
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    2400629  2018-09-30 13:13  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告.docx

     文件      43008  2018-06-30 01:46  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\a.out

     文件          6  2018-06-30 11:02  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\blank

     文件      30232  2018-06-30 08:58  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\c

     文件      25447  2018-06-30 11:57  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\client.c

     文件       1060  2018-06-30 11:49  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\ftp.h

     文件          6  2018-06-30 11:02  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test\blank

     文件      30232  2018-06-30 10:45  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test\c

     文件      30232  2018-07-04 12:09  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test\cc

     文件       1060  2018-06-30 11:27  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test\ftp.h

     文件          0  2018-06-30 11:14  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test\lwf

     文件          0  2018-06-30 10:53  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test\s

     文件          0  2018-07-04 12:11  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\lwf

     文件        112  2018-07-04 13:43  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\README.txt

     文件      25472  2018-06-30 08:57  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\s

     文件      23657  2018-06-30 11:57  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\server.c

     文件     142806  2018-05-03 10:07  193161-22-刘威甫Linux课程设计报告\2018Linux环境编程课程设计题目.docx

     文件      77616  2018-09-30 13:12  193161-22-刘威甫Linux课程设计报告\课程研究报告格式模板.docx

     目录          0  2018-07-04 13:43  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp\local_test

     目录          0  2018-07-04 13:43  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe\ftp

     目录          0  2018-07-04 13:43  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告\keshe

     目录          0  2018-09-30 13:13  193161-22-刘威甫Linux课程设计报告\193161-22-刘威甫Linux课程设计报告

     目录          0  2018-09-30 13:13  193161-22-刘威甫Linux课程设计报告

----------- ---------  ---------- -----  ----

              2831575                    23


评论

共有 条评论