• 大小: 5.42MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-26
  • 语言: C/C++
  • 标签: socket,MFC  

资源简介

用MFC实现服务端与客户端之间的文件传输,可支持上传下载,采用多线程控制,并可实现多个客户端连接一个服务器

资源截图

代码片段和文件信息

//////////////////////////////////////////////////
// TCPServer.cpp文件


#include “InitSock.h“
#include 
#include  
#include 

CInitSock initSock; // 初始化Winsock库

#define M_SIZE 1024

typedef struct  //定义回调函数参数结构体
{
    SOCKET sClient;
    char filepath[100];
char ipAddress[20];
char _fileArray[1000];
}threadInfo;


void ThreadFunc( LPVOID lpParam ) //回调函数
{
    char sendBuf[M_SIZE];
char recvBuf[M_SIZE];
char filename[100];
char filepath[100];
char _fileArray[1000];
FILE *fp;
int n;
size_t ret;
long file_size = 0;
char file_size_c[20];
    SOCKET sClient; 
int len;

threadInfo* pInfo=(threadInfo*)lpParam;//提取参数信息
    sClient = pInfo ->sClient;
strcpy(filepath pInfo ->filepath);
strcpy(_fileArray pInfo ->_fileArray);
sprintf(sendBuf“IP地址: %s “ pInfo ->ipAddress );

    send(sClient sendBuf strlen(sendBuf)+1 0);//发送信息到客户端
    recv(sClientrecvBufM_SIZE0);//接收客户端数据,这里接到的是操作标识

switch(recvBuf[0]) 
{
case ‘U‘:
{
printf(“IP为%s请求上传服务;\n“pInfo ->ipAddress);
    //接收文件名
recv(sClientfilename1000);
int size = 0;
strcat( filepath “\\“);
strcat( filepath filename );

if((fp = fopen(filepath“wb“)) == NULL)
{
return ;
}

while(1)
{
//接收文件
                ret=recv(sClientrecvBufM_SIZE0);
if(ret == 0)
{
break;
}
fwrite(recvBuf1retfp);
size += ret;
}
printf(“文件%s上传完成大小为%d byte\n“filename size);
fclose(fp);
}
break;
case ‘D‘:
{
printf(“IP为%s请求下载服务;\n“pInfo ->ipAddress );
recv(sClientfilename1000);

strcat( filepath “\\“);
strcat( filepath filename );

if((fp=fopen(filepath“rb“))==NULL)
closesocket(sClient);  //如果请求的文件不存在,则关闭连接
else
{
fseek(fp0SEEK_END);  //获取文件大小然后发给客户端
file_size = ftell(fp);
fseek(fp0SEEK_SET);
_i64toa( file_size file_size_c 10 );//将int(file_size)转化为string(file_size_c)10进制
send(sClient file_size_c strlen(file_size_c) + 1 0);//发送文件大小 
printf(“下载文件%s,大小为 %s byte\n“filename file_size_c);

while(1)
{
n=fread(sendBuf1M_SIZEfp);
if(n == 0)
{
break;
}
send(sClientsendBufn0);//发送文件给客户端
}
fclose(fp);
}
}

break;
case ‘Q‘:
{
printf(“IP为%s请求查询服务;\n“pInfo ->ipAddress);
while(1)
{

len = send(sClient _fileArray strlen(_fileArray)+1 0); //把共享路径的所有文件名发给客户端
if(len == -1)
{
break;
}
}
}
break;
default:
break;

}
    closesocket(sClient);
}

//socket
SOCKET create_socket()
{
// 创建套节字
SOCKET sListen = ::socket(AF_INET SOCK_STREAM IPPROTO_TCP);
if(sListen == INVALID_SOCKET)
{
printf(“Failed socket() \n“);
return 0;
}

// 填充sockaddr_in结构
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(6000);
sin.sin_addr.S_un.S_addr = INADDR_ANY;

// 绑定这个套节字到一个本

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1975296  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.bsc

     文件     204901  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.exe

     文件     234736  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.ilk

     文件      25550  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.obj

     文件      43520  2011-08-01 20:25  TCP有界面\TCPServer\Debug\TCPServer.opt

     文件    4653492  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.pch

     文件     451584  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.pdb

     文件          0  2012-08-16 08:37  TCP有界面\TCPServer\Debug\TCPServer.sbr

     文件     148480  2012-08-17 11:13  TCP有界面\TCPServer\Debug\vc60.idb

     文件      77824  2012-08-16 08:37  TCP有界面\TCPServer\Debug\vc60.pdb

     文件        512  2011-08-02 08:41  TCP有界面\TCPServer\initCriticalSection.h

     文件        461  2005-07-19 21:30  TCP有界面\TCPServer\initsock.h

     文件       5447  2012-08-15 08:32  TCP有界面\TCPServer\TCPServer.cpp

     文件       4455  2011-08-03 12:53  TCP有界面\TCPServer\TCPServer.dsp

     文件        541  2005-07-21 12:47  TCP有界面\TCPServer\TCPServer.dsw

     文件      91136  2012-08-17 11:30  TCP有界面\TCPServer\TCPServer.ncb

     文件      48640  2012-08-17 11:30  TCP有界面\TCPServer\TCPServer.opt

     文件        252  2012-08-17 11:13  TCP有界面\TCPServer\TCPServer.plg

     文件      12586  2011-08-03 17:17  TCP有界面\UIClient\Debug\RCa00436

     文件     105948  2012-08-16 08:37  TCP有界面\UIClient\Debug\StdAfx.obj

     文件    1375061  2012-08-16 08:37  TCP有界面\UIClient\Debug\StdAfx.sbr

     文件    3261440  2012-08-16 09:31  TCP有界面\UIClient\Debug\UIClient.bsc

     文件     118883  2012-08-16 09:31  TCP有界面\UIClient\Debug\UIClient.exe

     文件     251584  2012-08-16 09:31  TCP有界面\UIClient\Debug\UIClient.ilk

     文件      20229  2012-08-16 08:37  TCP有界面\UIClient\Debug\UIClient.obj

     文件    6878208  2012-08-16 08:37  TCP有界面\UIClient\Debug\UIClient.pch

     文件     394240  2012-08-16 09:31  TCP有界面\UIClient\Debug\UIClient.pdb

     文件       3216  2012-08-16 08:37  TCP有界面\UIClient\Debug\UIClient.res

     文件          0  2012-08-16 08:37  TCP有界面\UIClient\Debug\UIClient.sbr

     文件      58144  2012-08-16 09:31  TCP有界面\UIClient\Debug\UIClientDlg.obj

............此处省略31个文件信息

评论

共有 条评论

相关资源