Environment: VC6 SP4, NT4 SP5
Here are a couple of functions to transfer files between two computers. I haven’t seen any CSocket file transfer utilities around so this might just help you.
The code consists of two functions. The first function is the “server” and the second function is the “client”. Use them accordingly.
Now for the server portion:
void SendFile()
{
#define PORT 34000 /// Select any free port you wishAfxSocketInit(NULL);
CSocket sockSrvr;
sockSrvr.Create(PORT); // Creates our server socket
sockSrvr.Listen(); // Start listening for the client at PORT
CSocket sockRecv;
sockSrvr.Accept(sockRecv); // Use another CSocket to accept the connectionCFile myFile;
myFile.Open("C:\ANYFILE.EXE", CFile::modeRead | CFile::typeBinary);int myFileLength = myFile.GetLength(); // Going to send the correct File Size
sockRecv.Send(&myFileLength, 4); // 4 bytes long
byte* data = new byte[myFileLength];
myFile.Read(data, myFileLength);
sockRecv.Send(data, myFileLength); //Send the whole thing now
myFile.Close();
delete data;sockRecv.Close();
}
And the client of course:
void GetFile()
{
#define PORT 34000 /// Select any free port you wishAfxSocketInit(NULL);
CSocket sockClient;
sockClient.Create();// "127.0.0.1" is the IP to your server, same port
sockClient.Connect("127.0.0.1", PORT);int dataLength;
sockClient.Receive(&dataLength, 4); //Now we get the File Size firstbyte* data = new byte[dataLength];
sockClient.Receive(data, dataLength); //Get the whole thingCFile destFile("C:\temp\ANYFILE.EXE",
CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);destFile.Write(data, dataLength); // Write it
destFile.Close();
delete data;
sockClient.Close();
}
And thats all folks! Just make sure the server function runs before the client. Im sure many improvements can be made
to this like not sending the file in one big chunk and not hardcoding many of the functions. In any case this should
be easy enough for anyone to just "pop" into their project for a quick client/server transfer solution.
Downloads
Download demo project – 9 Kb
Download source code for functions- 1 Kb