资源简介
用的C语言socket实现的文件下载。服务器多线程。客户端有命令参数控制,有下载文件大小。进度条等

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#pragma comment(lib“Ws2_32.lib“)
#define DEFAULT_BUFLEN 512
#define DEFAULT_PORT 5150
#define BUFFER_SIZE 4096
int main(int argc TCHAR* argv[])
{
int iResultrec;
WSADATA wsaData;
HANDLE hout;
ofstream outfile;
SOCKET ConnectSocket = INVALID_SOCKET;
struct sockaddr_in clientService;
char sendbuf[DEFAULT_BUFLEN] = ““;
char szBuffer[BUFFER_SIZE];
BOOL issend = true;
//初始化Windows Sockets DLL
if(iResult = WSAStartup(MAKEWORD(22)&wsaData) != NO_ERROR)
{
printf(“WSAStartup failed with error : %d\n“iResult);
return -1;
}
//创建socket
ConnectSocket = socket(AF_INETSOCK_STREAMIPPROTO_TCP);
if(ConnectSocket == INVALID_SOCKET)
{
printf(“socket failed with error : %d\n“WSAGetLastError());
WSACleanup();
return -1;
}
////////////////////
char addr[20];
int prot ;
printf(“现在运行的是客户端!\n“);
printf(“**************************************************************\n“);
printf(“请输入服务器的IP地址:“);
scanf(“%s“addr);
printf(“请输入服务器的端口:“);
scanf(“%d“&prot);
///////////////////
//设置目的网络地址并连接服务器
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr(addr);
clientService.sin_port = htons(prot);
iResult = connect(ConnectSocket(SOCKADDR* )&clientServicesizeof(clientService));
if(iResult == SOCKET_ERROR)
{
printf(“connect failed with error : %d\n“WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
return -1;
}
printf(“connect with server successfully!!!\n“);
hout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hout
FOREGROUND_GREEN);
cout<<“输入命令:******************* help 获取命令提示**********************:\n“;
while(true)
{
//输入命令:
char cmd [20];
char help [10] =“help“;
char exit [10] =“exit“;
char get [10] =“get“;
char dir [10] =“dir“;
char quit [10] =“quit“;
char dirs [30];
scanf(“%s“&cmd);
printf(“输入的命令是%s\n“cmd);
if(strcmp(cmdhelp)==0){
printf(“命令参数:\n help----------获取命令帮助\n dir----------获取文件目录\n get----------下载文件\n exit----------退出\n“);
continue;
}
// 列目录
if(strcmp(cmddir)==0){
iResult = send(ConnectSocketdirstrlen(dir)0);
if(SOCKET_ERROR == iResult)
{
printf(“send failed with error : %d\n“WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
return -1;
}
//接收传过来的目录
SetConsoleTextAttribute(hout
FOREGROUND_GREEN |
FOREGROUND_BLUE);
printf(“**********************文件目录**********************\n“);
while(true){
ZeroMemory(dirs30);
iResult = recv(ConnectSocketdirs300);
//数据发送完成就跳出循环,结束时,服务器发过来quit
if(strcmp(dirsquit)==0){break;}
el
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-11-21 21:13 颜色版\
文件 191 2016-11-07 21:11 颜色版\allfiles.txt
文件 6728 2016-11-07 21:10 颜色版\client.cpp
文件 3401 2016-11-07 21:10 颜色版\client.dsp
文件 520 2016-11-07 21:24 颜色版\client.dsw
文件 41984 2016-11-07 21:24 颜色版\client.ncb
文件 48640 2016-11-07 21:24 颜色版\client.opt
文件 754 2016-11-07 21:10 颜色版\client.plg
目录 0 2016-11-21 21:13 颜色版\Debug\
文件 168 2016-11-07 20:03 颜色版\Debug\allfiles.txt
文件 561241 2016-11-07 21:10 颜色版\Debug\client.exe
文件 822028 2016-11-07 21:10 颜色版\Debug\client.ilk
文件 187959 2016-11-07 21:10 颜色版\Debug\client.obj
文件 1147904 2016-11-07 21:10 颜色版\Debug\client.pdb
文件 565337 2016-11-07 21:09 颜色版\Debug\server.exe
文件 840276 2016-11-07 21:09 颜色版\Debug\server.ilk
文件 204347 2016-11-07 21:09 颜色版\Debug\server.obj
文件 1164288 2016-11-07 21:09 颜色版\Debug\server.pdb
文件 214016 2016-11-07 21:10 颜色版\Debug\vc60.idb
文件 143360 2016-11-07 21:10 颜色版\Debug\vc60.pdb
文件 0 2016-10-31 20:37 颜色版\get
文件 6182 2016-11-07 21:21 颜色版\server.cpp
文件 3401 2016-11-07 21:09 颜色版\server.dsp
文件 520 2016-11-07 21:21 颜色版\server.dsw
文件 41984 2016-11-07 21:21 颜色版\server.ncb
文件 48640 2016-11-07 21:21 颜色版\server.opt
文件 754 2016-11-07 21:09 颜色版\server.plg
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
评论
共有 条评论