资源简介
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
相关资源
- 武汉理工大学高频课程设计
- 培训机构管理系统数据库课程设计
- 餐饮管理系统 课程设计报告加源码加
- 微型计算机及接口技术课程设计_彩灯
- 餐厅点菜系统的源代码是面象对面软
- 数据结构课程设计——哈夫曼编/译码
- 数据结构课程设计医院选址系统
- 数据库课程设计——工资管理系统-
- linux环境下课程设计《二级文件系统》
- 软件工程课程设计 超市管理系统详细
- 数字密码锁(完整报告)-课程设计
- 武汉理工大学信息理论课程设计代码
- 课程设计-----图书管理系统.rar
- 电子电路课程设计——方向之星控制
- 计算机网络课程设计小型企业建设
- 银行管理系统——数据库课程设计
- 数据库系统课程设计_民航机场售票管
- 华工数据结构课程设计
-
优秀xm
l程序设计(学生信息管理) - CA6140拨叉831008的课程设计 夹具图 毛坯
- 数据库原理及应用课程设计
- 计算机系统综合课程设计
- FTP客户端的搭建过程---网络课程设计
- 数据库课程设计-有图形界面-无需修改
- 书刊租借信息管理系统 数据库课程设
- 单片机课程设计
- 基于linux的操作系统课程设计 中北大
- pb_学生选课系统
- 操作系统课程设计 绘制资源分配图
- 网络工程与组网技术校园网课程设计
评论
共有 条评论