资源简介
linux 网络编程 socket编程 ftp的用户端和服务器端源程序
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define _GNU_SOURCE
struct client_t
{
pthread_t tid;
int conn_fd;
int used;
char name[20];
}p_client[10];
struct server_t
{
FILE * fp;
int sockfd;
};
typedef struct client_path
{
char currentDirPath[100];
}pri_struct;
static pthread_key_t pri_key;
static pthread_once_t pri_once = PTHREAD_ONCE_INIT;
pthread_mutex_t client_no = PTHREAD_MUTEX_INITIALIZER;
int count = 0;
int count_all = 0;
int using[10];
void *client_conn(void *arg);
void call_once(void);
char help[]=“get:download a file from server\nput:upload a file to server\npwd:show the current path\nls:list files in the current directory\ncd:change directory\nascii/binary:switch mode\nquit:quit this ftp\n“;
void cmd_ls(int sock);
void cmd_cd(int sockchar *dirName);
void cmd_cdback(int sock);
void cmd_get_bin(int sockdatachar*filename);
void cmd_get_ascii(int sockdatachar *filename);
void cmd_put_bin(int sockdatachar *filename);
void cmd_put_ascii(int sockdatachar* filename);
void *server(void *arg);
static void pri_destructor(void *ptr)
{
free(ptr);
}
static void pri_onlyonce(void)
{
pthread_key_create(&pri_keypri_destructor);
}
void get_path(pri_struct * p_data)
{
memset(p_data->currentDirPath0sizeof(p_data->currentDirPath));
getcwd(p_data->currentDirPathsizeof(p_data->currentDirPath));
}
int main(int argcchar** argv)
{
int sockfd;
struct hostent *hptr;
char **pptr;
char hostname[32];
char *addr;
struct sockaddr_in server_addr;
int bind_succ;
int port;
int sockdata;
int ij;
int * quit = NULL;
char username[30]password[20]buf[50]client_name[20];
char * line = NULL;
size_t len = 0;
ssize_t read;
int flag = 0;
int flag_client = 0;
pthread_t serv_tid;
FILE *fp;
struct server_t ser_struct;
for(i=0;i<10;i++)
{
p_client[i].used = 0;
using[i] = 0;
}
fp = fopen(“./user.txt““r“);
if (fp == NULL)
exit(EXIT_FAILURE);
printf(“please input username and password!\nusername: “);
scanf(“%s“username);
printf(“password: “);
scanf(“%s“password);
strcat(username“ “);
strcat(usernamepassword);
strcat(username“\n“);
while ((read = getline(&line &len fp)) != -1)
{
if(strcmp(lineusername)==0)
{
flag = 1;
break;
}
}
if (line)
free(line);
if(flag == 1)
printf(“login successed!\nWelcome to ftpserver!\n“);
else
{
printf(“login failed!\nPlease check your username or password\n“);
return -1;
}
if (argc == 2)
{
if( gethostname(hostnamesizeof(hostname)) )
{
printf(“gethostname calling error\n“);
return 1;
}
if( (hptr = gethostbyname(hostna
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 60 2009-04-14 21:34 ftp\client.txt
文件 18447 2009-02-19 22:47 ftp\ftpserver.c
文件 13864 2009-02-19 22:50 ftp\myftp.c
文件 544 2009-04-14 21:34 ftp\readme.txt
文件 19 2009-04-14 21:34 ftp\user.txt
目录 0 2009-04-14 21:34 ftp
----------- --------- ---------- ----- ----
32934 6
- 上一篇:数据结构-最小通信网问题
- 下一篇:数字信号处理实验1信号系统及其响应参考代码
相关资源
- 毕业设计:网络围棋对弈
- 操作系统实验综合设计【附代码】
- 高校学生信息管理系统
- wireless系列工具源码,附iwpriviwlistiw
- 全自动多功能编码转换工具(URLASCI
- modbus51_c代码
- LCD12864滚动显示
- 用Socket写的简易FTP服务器和客户端
- Delphi做的用于分析Pascal语言的词法分
- 学生成绩管理系统C 源码(很完整)
- 声音文件播放程序.可以播放WAV文件并
- Linux命令大全离线版&在线版
- 基于C 的简易FTP客户端(带源码)
- C 编写的防火墙程序源代码
- EXCEL横转竖(列转行)宏
- 操作系统共享内存实验
- 大数阶乘的C 算法实现
- dos 下运行Linux 命令--gnu_utils
- DICOM文件读取程序
- Excel高效办公实例
- 经典的Viterbi算法
- stm32 用SPI 方式读写 SDHC
- 企业销售管理信息系统(全套)
- 数字电压表(源程序 protues仿真)
- 选课系统c (指针与链表)
- C (MFC)华容道自动求解
- VC 编程实现活动主机扫描源代码
- MVC模式实现的计算器
- 在线考试系统VC (MFC)
- 自定义的TabCtrl控件实现
评论
共有 条评论