服务端
#pragma comment(lib, "iegadCommon.lib")
#include "iegadNet.h"
#include <iostream>
#include <fstream>
int main()
{
Socket::InitSockVersion();
EndPoint currentEP;
currentEP.SetIpAddress(Socket::GetLocalIpAddress());
std::cout<<currentEP.GetIpAddress()<<std::endl;
TcpClient tcpClnt;
int rzt = tcpClnt.Connect("192.168.1.108", 7777);
if (!rzt)
{
std::cout<<"连接成功"<<std::endl;
}
else
{
std::cout<<"连接失败"<<std::endl;
}
std::ofstream fout;
fout.open("C:\\Users\\Administrator\\Desktop\\1.iso", std::ios_base::app | std::ios_base::binary);
std::cout<<"开始接收...\n";
while (1)
{
int recvLen;
rzt = tcpClnt.Recv((char *)&recvLen, 4);
if (rzt != 4)
{
std::cout<<"error 1\n";
break;
}
if (recvLen == -1)
{
break;
}
char * recvBuffer = new char[recvLen];
rzt = tcpClnt.Recv(recvBuffer, recvLen);
if (rzt != recvLen)
{
std::cout<<"error 2\n";
delete[] recvBuffer;
break;
}
std::cout<<recvLen<<std::endl;
fout.write(recvBuffer, recvLen);
delete[] recvBuffer;
}
fout.close();
std::cout<<" 完成"<<std::endl;
std::cin.get();
Socket::ReleaseSockVersion();
return 0;
}
客户端
#pragma comment(lib, "iegadCommon.lib")
#include "iegadNet.h"
#include <iostream>
#include <fstream>
int main()
{
Socket::InitSockVersion();
EndPoint currentEP;
currentEP.SetIpAddress(Socket::GetLocalIpAddress());
currentEP.SetPort(7777);
std::cout<<currentEP.GetIpAddress()<<std::endl;
TcpServer tcpSvr(currentEP);
int rzt = tcpSvr.Bind();
if (!rzt)
{
std::cout<<"连接成功"<<std::endl;
}
rzt = tcpSvr.Listen(16);
if (!rzt)
{
std::cout<<"打开监听"<<std::endl;
}
EndPoint clntEP;
TcpClient clnt = tcpSvr.Accept(clntEP);
clnt.SetNetEnvironment(clntEP);
std::cout<<clnt.GetIpAddress()<<std::endl;
std::ifstream fin;
fin.open("E:\\iegadTools\\GRMSDK_EN_DVD.iso", std::ios_base::binary | std::ios_base::in);
fin.seekg(0, std::ios_base::end);
int fSize = fin.tellg();
int tempSize = fSize;
fin.seekg(0, std::ios_base::beg);
int sendLen = 1024 * 1024;
std::cout<<"开始发送\n";
int ttLen = 0;
while (tempSize)
{
char * sendBuffer = new char[sendLen];
fin.read(sendBuffer, sendLen);
rzt = clnt.Send((char *)&sendLen, 4);
if (rzt != 4)
{
delete[] sendBuffer;
break;
}
rzt = clnt.Send(sendBuffer, sendLen);
if (rzt != sendLen)
{
delete[] sendBuffer;
break;
}
std::cout<<sendLen<<std::endl;
tempSize -= rzt;
ttLen += rzt;
if (tempSize < sendLen)
{
sendLen = tempSize;
}
delete[] sendBuffer;
}
fin.close();
rzt = -1;
clnt.Send((char *)&rzt, 4);
std::cout<<"完成"<<std::endl;
std::cin.get();
Socket::ReleaseSockVersion();
return 0;
}