• 大小: 8.51 KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-08-29
  • 语言: 其他
  • 标签: linux  c  ftp  socket  

资源简介

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


评论

共有 条评论