资源简介
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节奏大师
- 下一篇:网络中的嗅探行为与防御措施
相关资源
- ModBus-RTU协议C封装
- 基于单片机的GPS定位及显示系统设计
- DNF偏移查找工具源码DNF-offset-lookup-t
- 稀疏表示SRC算法
- Kinect手势代替鼠标控制PC
- 压缩感知TwIST
- 基于Multisim10的十字路口交通灯控制器
- SmartFoxServer2X v2.13.5 Crack 破解
- SM2国密算法实现基于mircal的实现
- 客户消费积分管理系统
- 炸弹人(cocos2d-x 3.2)
- ad9850.c(能够输出正弦波和方波,2个
- titanic_dataset.csv泰坦尼克数据集
- PFC 3D 3.0三轴压缩建模
- 基于Eclipse编写的在线支付软件
- c实现pop3接收邮件
- CHM转Word工具
- 郁金香CALL测试工具
- fc小霸王坦克大战所有音效
- 链表实现通讯录管理系统
- Excel公式大全操作应用(史上最全)
- SfM稀疏三维点云重建--完整工程文件
- GLD无驱写锁S4 11-26-优化 GQI2021 GJG2021
- PowerShell-6.2.1-win-x86.zip
- AI Challenger用户评论情感分析
- 2020年云天泰山杯山东网安CTF大赛真题
- Excel图表实战技巧精粹
- 算法导论(第2版)Introduction to Algor
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- 《思科网络技术学院教程.CCNA2.路由器
评论
共有 条评论