资源简介
用的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
相关资源
- 基于A*算法的十五数码程序 C语言版
- 餐饮管理系统源代码(亲测)
- 编程精粹:编写高质量C语言代码中文
- winsocket编程实现简单 server端和client端
- C语言-ATM机模拟系统exe及源码
- C语言实现2的指数次点的FFT
- 2018锐捷网络C语言内部笔试试题
- C语言Windows程序设计 机房收费管理系
- PE文件解析器的原理C语言代码
- C语言贪吃蛇
- MSP430系列单片机实用C语言程序设计及
- 数据结构C语言版Word
- C语言国际标准C99(ISO_IEC_9899_1999+TC1
- C语言编的数据库管理系统DBMS
- 基于C_S结构的Socket程序设计(含源码
- 经典中的经典 c语言教程——窗口图形
- 《数据结构》C语言版算法源码及运行
- 零基础入门c语言pdf文档王桂林老师
- 李春葆:数据结构习题与解析(C语言
- DSP 77个C语言程序 包括FFTFIR IIR等的D
- 10小时学会C语言
- 数据结构习题集C语言版严蔚敏_吴伟民
- 语音识别STM_C语言代码
- 哲学家进餐问题的C语言实现
- c语言流程图生成器c语言源程序直接转
- C语言程序设计第三版
- C语言库头文件 全
- 校园导游系统c语言代码及课程设计文
- C程序设计第五版谭浩强PPT课件、课后
- c语言魂斗罗版本代码
评论
共有 条评论