资源简介

用的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

评论

共有 条评论