资源简介
linux c下的ftp客户端和服务器端,比较标准的一个例子,实现了ftp的基本所有功能,十分具有学习价值。

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include “pub_data.h“
#define SHARE_SIZE 2048
int sem_id;
union semun
{
int val;
struct semid_ds *buf;
unsigned short *array;
struct seminfo *__buf;
};
void init_sem(int sem_id)
{
union semun sem_un;
sem_un.val=1;
semctl(sem_id0SETVALsem_un);
}
void sem_p(int sem_id)
{
struct sembuf sem_buf;
sem_buf.sem_num=0;
sem_buf.sem_op=-1;
sem_buf.sem_flg=0;
semop(sem_id&sem_buf1);
}
void sem_v(int sem_id)
{
struct sembuf sem_buf;
sem_buf.sem_num=0;
sem_buf.sem_op=1;
sem_buf.sem_flg=0;
semop(sem_id&sem_buf1);
}
void init_stat()
{
int /*sem_id*/shm_id;
void *addr=NULL;
shm_id=shmget((key_t)1234SHARE_SIZEIPC_CREAT|0755);
sem_id=semget((key_t)12341IPC_CREAT|0755);
init_sem(sem_id);
addr=shmat(shm_idNULL0);
sys_stat=(SYS_STAT *)addr;
sys_stat->upfile_count=0;
sys_stat->downfile_count=0;
sys_stat->upfile_byte=0;
sys_stat->downfile_byte=0;
}
int op_stat(int typelong bytes)
{
sem_p(sem_id);
if(type==0) //上传文件
{
sys_stat->upfile_count++;
sys_stat->upfile_byte+=bytes;
}
if(type==1) //下载文件
{
sys_stat->downfile_count++;
sys_stat->downfile_byte+=bytes;
}
sem_v(sem_id);
return 0;
}
void scan_stat(char *_return_info)
{
memset(_return_info‘\0‘sizeof(_return_info));
sprintf(_return_info“\t%s%d%s%d%s\n\t%s%d%s%d%s\r\n““the stored files count:“sys_stat->upfile_count“ “sys_stat->upfile_byte“Bytes““the retrieved files count:“sys_stat->downfile_count“ “sys_stat->downfile_byte“Bytes“);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2050 2012-03-30 23:54 ftpserver\ftpstat.c
文件 415 2012-03-30 23:54 ftpserver\ftpstat.h
文件 20513 2012-03-30 23:57 ftpserver\myftpcmd.c
文件 1297 2012-03-30 23:57 ftpserver\myftpcmd.h
文件 4989 2012-03-30 23:55 ftpserver\myftpd.c
文件 488 2012-03-30 23:56 ftpserver\myftpd.h
文件 9907 2012-03-30 23:58 ftpserver\myftpservice.c
文件 726 2012-03-30 23:58 ftpserver\myftpservice.h
文件 1253 2012-03-30 23:59 ftpserver\pubdata.h
目录 0 2012-03-31 15:19 ftpserver
----------- --------- ---------- ----- ----
41638 10
- 上一篇:纯js节奏大师
- 下一篇:网络中的嗅探行为与防御措施
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- Modbus协议官方文档中、英文全
- pcbtemp电流计算软件
- I2C读写AT24C02 基于STM32F103 cube116540
- Scratch源码
- Microsoft Forms 2.0107770
- 实验三 消息中间件应用开发:Active
- WCE注入工具
- ModelGoon-4.4.1-site.zip
- AsyncTask文件控制暂停和继续,在状态
- Visio大全模具(含Cisco、IBM等常用拓扑
- 信号奇异点Lipschitz指数计算
- 基于STM32RCT6的步进电机驱动程序
- 酒店管理系统基于Qt Creator5)
- 用友NC开发API字典
- Navicat Premium 15汉化包.zip55438
- 登录注册界面.zip48872
- 条码字体barcode128
- Rational Rose Common破解文件
- res10_300x300_ssd_iter_140000.caffemodel与dep
- scratch 第1课 翻跟斗的小猫(入门)
- stm32f407上的两个can发送和接收例程
- Scrach 欢乐狙击手.sb2
- 04741计算机网络原理知识点整理.docx(
- Wolfram Mathematica 矩阵初等变换函数(
- pscad近海风电模型 Fortran语言
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- AutoCAD永久去教育版破解补丁
- 开源1A锂电池充电板TP4056原理图+PCB
评论
共有 条评论