//Server----Receive
#include <cstdlib>
#include <iostream>
#include "CSocket.h"
#define SIZE (1024*1024)
struct pack_head
{
int nfileSize;
char szfileName[32];
};
int main(int argc, char *argv[])
{
CSocket::InitLib();
CSocket sock, trsock;
sock.InitSock();
sock.Bind();
sock.Listen();
Redo:
printf("Now wait for connection........\n");
sock.Accept(trsock);
printf("Connected now........\n");
pack_head strupk;
memset(&strupk, 0, sizeof(pack_head));
trsock.Recv((char*)&strupk, sizeof(pack_head));
printf("%s\n%d\n", strupk.szfileName, strupk.nfileSize);
assert(strupk.nfileSize > 0);
char path[32] = "E:\\"; strcat(path, strupk.szfileName);
FILE *fp = fopen(path, "wb");
assert(fp != NULL);
int FileSize = strupk.nfileSize;
int nXiabiao = 0;
int nBytesRecvd = 0;
char *pBuff = (char*)malloc(SIZE);
memset(pBuff, 0, SIZE);
printf("Receiving...................................");
while (nBytesRecvd < FileSize)
{
int k = trsock.Recv(pBuff+nXiabiao, SIZE);
if (k <= 0)
{
trsock.Close();
fclose(fp);
goto Redo;
}
nXiabiao += k;
nBytesRecvd += k;
int i = int(((double)nBytesRecvd/FileSize)*100);
printf("%d%%", i);
if (i <= 9)
printf("\b\b");
else if (i != 100)
printf("\b\b\b");
else
printf("\n");
if (nXiabiao == SIZE || nBytesRecvd == FileSize)
{
fflush(fp);
fwrite(pBuff, 1, nXiabiao, fp);
memset(pBuff, 0, SIZE);
nXiabiao = 0;
}
}
fclose(fp);
free(pBuff);
system("PAUSE");
return EXIT_SUCCESS;
}
//Client------Send
#include <cstdlib>
#include <iostream>
#include "CSocket.h"
#define SIZE (1024*1024)
struct pack_head
{
int nfileSize;
char szfileName[32];
};
int main(int argc, char *argv[])
{
CSocket::InitLib();
CSocket c;
c.InitSock();
while (c.Connect() == FALSE)
{
Sleep(1000*2);;
}
printf("Connected !\n");
char fpath[128] = "";
char fname[20] = "";
printf("Input file path:");
gets(fpath);
printf("Input file name:");
gets(fname);
FILE* fp = fopen(fpath, "rb");
assert(fp != NULL);
fseek(fp, 0, SEEK_END);
int filesize = ftell(fp);
fseek(fp, 0, SEEK_SET);
printf("filesize:\t%d\n", filesize);
pack_head s;
memset(&s, 0, sizeof(pack_head));
memcpy(s.szfileName, fname, sizeof(fname));
s.nfileSize = filesize;
c.Send((char*)&s, sizeof(s));
char *pBuff = (char*)malloc(SIZE);
memset(pBuff, 0, SIZE);
int nBytesSend = 0;
printf("Sending...................................");
while(!feof(fp))
{
int read = fread(pBuff, 1, SIZE, fp);
{
int k = c.Send(pBuff, read);
if (k <= 0)
{
c.Close();
fclose(fp);
break;
}
else
{
nBytesSend += k;
int i = int(((double)nBytesSend/filesize)*100);
printf("%d%%", i);
if (i <= 9)
printf("\b\b");
else if (i != 100)
printf("\b\b\b");
else
printf("\n");
}
}
memset(pBuff, 0, SIZE);
Sleep(10);
}
fclose(fp);
free(pBuff);
system("PAUSE");
return EXIT_SUCCESS;
}