资源简介
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\li
文件 3298 2017-11-15 11:23 test_client\test_client\Debug\test_client.tlog\li
文件 714 2017-11-15 11:23 test_client\test_client\Debug\test_client.tlog\li
文件 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个文件信息
- 上一篇:MFC控制摄像头
- 下一篇:LINUX编程典型解析.part2.rar
评论
共有 条评论