資源簡介
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信號系統及其響應參考代碼
評論
共有 條評論