• 大小: 15.39MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-21
  • 语言: C/C++
  • 标签:

资源简介

VC++基于socket传输文件服务端和客户端代码,并且加入配置文件

资源截图

代码片段和文件信息

//client.cpp  
#include  
#include  
#include  
#include“client.h“  
#include“message.h“  

using namespace std;

bool ConnectServer(char * ServerIp);
bool GetInitFile(char * ServerIp char *FilePath int &Port);
int main()
{
char ServerIp[20] FilePath[256];
int Port;
if (GetInitFile(ServerIp FilePath Port))
{
exit(-1);
}
if (!ConnectServer(ServerIp))
{
exit(-1);
}
return 0;
}
bool GetInitFile(char * ServerIp char *FilePath int &Port)
{
Port = GetPrivateProfileInt(“PORT“ “serverport“ 0 “.//config.ini“);
GetPrivateProfileString(“IP“ “serverip“ NULL ServerIp 20 “.//config.ini“);

GetPrivateProfileString(“FILEPATH“ “filepath“ NULL FilePath 256 “.//config.ini“);

//HZIP hz = CreateZip(“c:\\simple1.zip“ 0);
//ZipAdd(hz “znsimple.bmp“ “c:\\simple.bmp“);
//ZipAdd(hz “znsimple.txt“ “c:\\simple.txt“);
//CloseZip(hz);
//HZIP hz = OpenZip(“D:\\zip_utils_src.zip“ 0);
//ZIPENTRY ze; GetZipItem(hz -1 &ze); int numitems = ze.index;
//for (int i = 0; i //{
// GetZipItem(hz i &ze);
// UnzipItem(hz i ze.name);
//}
//CloseZip(hz);
return 0;
}

bool ConnectServer(char * ServerIp)
{
Client client;
if (!client.InitSock())
{
cout << “初始socket失败“ << endl;
return false;
}
SOCKET saRemote = client.ConnectServer(client.ResolveAdress(ServerIp) PORT);
if (saRemote == INVALID_SOCKET)
{
cout << “连接服务器失败“ << endl;
return false;
}
if (!client.ProcessConnection(saRemote))
{
return false;
}
client.CloseSocket();
return true;
}
bool Client::InitSock()    //初始socket  
{
WSADATA wsData;
WORD wr = MAKEWORD(2 2);
if (WSAStartup(wr &wsData) == 0)
{
return true;
}
return false;
}
u_long Client::ResolveAdress(char *serverIp)   //解析IP地址  
{
u_long nAddr = inet_addr(serverIp);
if (nAddr == INADDR_NONE)  //表明serverIp使用的是主机名形式  
{
hostent *ent = gethostbyname(serverIp);
if (ent == NULL)
{
cout << “获取主机名出错“ << WSAGetLastError() << endl;
}
else
{
nAddr = *((u_long *)ent->h_addr_list[0]);
}
}
if (nAddr == INADDR_NONE)
{
cout << “解析主机地址失败“ << endl;
}
return nAddr;
}
SOCKET Client::ConnectServer(u_long serverIp int port)   //连接服务器  
{
sd = socket(AF_INET SOCK_STREAM 0);
if (sd == INVALID_SOCKET)
{
cout << “床架套接字失败“ << endl;
return INVALID_SOCKET;
}
sockaddr_in saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr.S_un.S_addr = serverIp;
saServer.sin_port = htons(port);
if (connect(sd (sockaddr*)&saServer sizeof(sockaddr_in)) == SOCKET_ERROR)
{
cout << “连接服务器失败“ << WSAGetLastError() << endl;
closesocket(sd);
return INVALID_SOCKET;
}
return sd;
}
bool Client::ProcessConnection(SOCKET sd)      //进行通信  
{
//-------------------------------------------------  
//可以将下面代码看做设置系统缓冲区  
int nRecvBuf = 1024000;//设置为1000K  
setsockopt(sd SOL_SOCKET SO_RCVBUF (const char*)&nRecvBuf siz

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

     文件         88  2017-11-14 20:01  test_client\Debug\config.ini

     文件      82944  2017-11-15 11:23  test_client\Debug\test_client.exe

     文件     537700  2017-11-15 11:23  test_client\Debug\test_client.ilk

     文件    1338368  2017-11-15 11:23  test_client\Debug\test_client.pdb

     文件       9536  2017-11-15 11:23  test_client\test_client\client.cpp

     文件       1051  2017-11-14 18:50  test_client\test_client\client.h

     文件         88  2017-11-14 20:01  test_client\test_client\config.ini

     文件     230631  2017-11-15 11:23  test_client\test_client\Debug\client.obj

     文件       1245  2017-11-14 20:27  test_client\test_client\Debug\test_client.Build.CppClean.log

     文件       1246  2017-11-15 11:23  test_client\test_client\Debug\test_client.log

     文件       2410  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\cl.command.1.tlog

     文件      67520  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\CL.read.1.tlog

     文件       3254  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\CL.write.1.tlog

     文件       1410  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\link.command.1.tlog

     文件       3298  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\link.read.1.tlog

     文件        714  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\link.write.1.tlog

     文件        197  2017-11-15 11:23  test_client\test_client\Debug\test_client.tlog\test_client.lastbuildstate

     文件     928768  2017-11-15 11:23  test_client\test_client\Debug\vc120.idb

     文件     471040  2017-11-15 11:23  test_client\test_client\Debug\vc120.pdb

     文件       5267  2005-07-28 10:47  test_client\test_client\examples\modify\modify.cpp

     文件         98  2005-07-28 00:25  test_client\test_client\examples\modify\modifyBCB.bpf

     文件       3335  2005-07-28 00:27  test_client\test_client\examples\modify\modifyBCB.bpr

     文件        905  2005-07-28 00:30  test_client\test_client\examples\modify\modifyVS.sln

     文件       3621  2005-07-27 03:22  test_client\test_client\examples\modify\modifyVS.vcproj

     文件       6468  2005-07-28 00:20  test_client\test_client\examples\progress\progress.cpp

     文件        101  2005-07-27 18:40  test_client\test_client\examples\progress\progressBCB.bpf

     文件       3903  2005-07-28 00:30  test_client\test_client\examples\progress\progressBCB.bpr

     文件        909  2005-07-28 00:31  test_client\test_client\examples\progress\progressVS.sln

     文件       3717  2005-07-27 16:11  test_client\test_client\examples\progress\progressVS.vcproj

     文件       6174  2005-07-28 10:47  test_client\test_client\examples\simple\simple.cpp

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

评论

共有 条评论

相关资源