资源简介
这是一个运行于Linux环境下的基于服务器的文件共享程序,拥有网络连接,文件上传下载以及管理等功能!
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “Global.h“
using namespace std;
string GetHostIP();
int ConnectServer();
void UploadFile();
void DownloadFile();
void LookoverList();
void RefreshList();
int clientSock;
list gFileList;
list::iterator gIter;
char gMsgBuf[BUFSIZE];
int main()
{
while(1)
{
system(“clear“);
cout<<“\t\t------------------Client------------------\n“< cout<<“\n\t\tChoose the operation from the menu:“< cout<<“\t\t1.Upload files to server“< cout<<“\t\t2.Download files from server“< cout<<“\t\t3.Lookover list of files“< cout<<“\t\t0.Exit“< cout<<“\t\tPlease input your option:“;
int opt;
cin>>opt;
switch(opt)
{
case 1:
UploadFile();
break;
case 2:
DownloadFile();
break;
case 3:
LookoverList();
break;
case 0:
system(“clear“);
return 0;
default:
cout<<“\n\t\tinput illegal!“< continue;
}
}
return 0;
}
int ConnectServer()
{
sockaddr_in addr;
if((clientSock=socket(AF_INETSOCK_STREAM0))<0)
{
perror(“socket“);
exit(1);
}
bzero(&addrsizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
addr.sin_addr.s_addr=inet_addr(REMOTE_IP);
if(connect(clientSock(sockaddr*)&addrsizeof(addr))<0)
{
perror(“connect“);
exit(1);
}
return 0;
}
void UploadFile()
{
RefreshList();
ConnectServer();
bzero(gMsgBufsizeof(gMsgBuf));
FileItem file;
cout<<“\t\tPlease input the path of file:\n\t\t“;
string strPath;
cin>>strPath;
int pos=strPath.find_last_of(‘/‘);
strcpy(file.attrib.namestrPath.substr(pos+1).c_str());
strcpy(file.attrib.ipAddrGetHostIP().c_str());
FILE *fileStream;
if((fileStream=fopen(strPath.c_str()“r“))==NULL)
{
printf(“\n\t\tthe file was not opened!\n“);
close(clientSock);
return;
}
int len=fread(file.content1900fileStream);
file.attrib.size=len;
Message msg;
msg.msgType=UPLOADFILE;
memcpy(msg.date&filesizeof(FileItem));
memcpy(gMsgBuf&msgsizeof(msg));
if(send(clientSockgMsgBufBUFSIZE0)<0)
perror(“send“);
fclose(fileStream);
close(clientSock);
gFileList.push_back(file.attrib);
}
void DownloadFile()
{
RefreshList();
ConnectServer();
cout<<“\t\tPlease input the order of file you want to download:“;
int fileOrder;
cin>>fileOrder;
if(fileOrder>gFileList.size()||fileOrder<=0)
{
cout<<“\n\t\tInput illegal!“<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1395 2012-06-30 17:02 Client代码\Global.h
文件 5806 2012-06-30 17:02 Client代码\main.cpp
文件 1461 2012-06-30 17:02 Server代码\Global.h
文件 14972 2012-06-30 17:02 Server代码\main.cpp
目录 0 2012-06-30 17:03 Client代码
目录 0 2012-06-30 17:03 Server代码
----------- --------- ---------- ----- ----
23634 6
- 上一篇:CAD展点小程序
- 下一篇:数据库系统课程设计——银行管理系统
相关资源
- 英特尔集成显卡及核心显卡Intel(R)
- jdk-7u67-linux-x64.tar.gz
- Intel Parallel Studio XE 2018 Update 1 Windows
- delphi写的自动升级演示 多线程+http服
- Linux下的Socket聊天系统,QT完整界面
- Linux下的QT车牌识别门禁系统基于ope
- SElinux详细讲解
- Linux下使用UDP协议的点对点聊天程序含
- Linux系统自动不停重启并计数的shell脚
- 封装一个类搞定90%安卓客户端与服务
- FastDFS单机版图片服务器17年淘淘商城
- ov9650摄像头在qt中的实现代码
- 基于Live555的从多个摄像头实时获取
- 将游戏手柄按键映射到键盘
- linux下tuxedo服务器安装与配置
- 华清远见uboot和linux内核移植实验手册
- linux外文翻译内含中英文
- 暴包括51,stm32,LINUXs三种和美的空调
- 基于Linux的模拟进程调度算法
- GCC中文手册 中国linux论坛man手册翻译
- centos7 linux 获取各个网口速率 占用率
- linux内存管理实验报告
- Linux下在shell脚本中设置锁的命令
- 基于Linux网络聊天室的设计
- 四川大学计算机网络实验——web服务
- linux C 多线程编程典型
- 基于linux和gtk的mp3播放器
- Dell PowerEdge R820 服务器 安装 server20
- linux 系统cpu、内存、IO等监控脚本
- linux Qt局域网聊天
评论
共有 条评论