永发信息网

MFC怎么实现通过网络传送文件

答案:1  悬赏:10  手机版
解决时间 2021-01-08 23:31
MFC怎么实现通过网络传送文件
最佳答案
很大的文件, 如果楼主没什么时间去研究校验 丢包重发 等等功能的话 就直接用CSOCKET 然后用TCP 直接连接就好咯
C/C++ code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

void SendFile()
{
#define PORT 34000 /// Select any free port you wish
AfxSocketInit(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 connection
CFile 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();
}

以下是客户端代码 void GetFile()
{
#define PORT 34000 /// Select any free port you wish
AfxSocketInit(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 first
byte* data = new byte[dataLength];
sockClient.Receive(data, dataLength); //Get the whole thing
CFile destFile("C:\\temp\\ANYFILE.EXE",
CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
destFile.Write(data, dataLength); // Write it
destFile.Close();
delete data;
sockClient.Close();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
“饶”名字读什么
小白龙塑料管厂家和产品介绍
错版币。。
MOON和SKY谁得的冠军多?
带“寿”字的成语有哪些?
你好,如何取消电话和公司绑定?
谈对象第一次见面见完了,下一步怎么做?
房间墙壁上有一只超级大的蟑螂,他还会飞!!
阅读下面这首清诗,回答问题。岁暮到家蒋士铨
什么是黄标车,新车多长时候黄标
潍坊哪个区比较好,长久考虑,一直生活下去的
雷清泉怎么从哈理工走了???
《霸爱独宠:兰陵王妃(完结)》txt全集下载
手机上标识这vmoda这是什么牌子手机
定做西装怎样量尺寸?
推荐资讯
双色球15中6红球有多少组三等奖
0.6mm304不锈钢板多少钱一平方
算式44444444444444444444÷3的余数是
哪里可以买到4排X12PIN(共48针)、间距2mm,
生姜艾水洗头能治油脂溢性脱发吗?
磨机润滑油质变差原因
圆的参数方程可以直接带角度求坐标吗
单选题下列化合物中离子核间距最大的是A.NaCl
根据短文内容和首字母提示,填写所缺单词,使
越来越越来越人造什么句子
水族箱里面的水泵需要一直开着吗?
为什么西班牙的日照时间那么长?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?