24小时热门版块排行榜    

Znn3bq.jpeg
查看: 210  |  回复: 0
当前主题已经存档。

zsglly

木虫 (著名写手)

[交流] 使用CSockets进行文件传送

这是一对实现在两台计算机间传送文件的函数,我没有看到过使用CSocket进行文件传送的代码,希望此代码对你有用.代码中包含两个函数,第一个用于服务器端,第二个用于客户端.
需要说明的是本文提供的方法并不适用于大型文件的传送.

下面给出服务器端代码: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();
}

最好确认服务器端函数在客户端函数之前运行,本文的代码可以方便地添加到工程中,解决服务器/客户模型中的文件传送问题.
感谢大家!

[ Last edited by 幻影无痕 on 2006-11-29 at 07:45 ]
回复此楼

» 猜你喜欢

做人要厚道啊!厚道啊!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zsglly 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 294求调剂 +14 淡然654321 2026-04-15 14/700 2026-04-16 21:01 by lpl364211
[考研] 291求调剂 +11 关忆北. 2026-04-14 11/550 2026-04-16 15:18 by jiahl2024
[考研] 290调剂生物0860 +38 哇哈哈,。 2026-04-11 44/2200 2026-04-16 09:52 by cuisz
[考研] 初试324 中药学 一志愿天中医 求调剂 +4 李的Lucky 2026-04-10 4/200 2026-04-16 09:22 by fqwang
[考研] 279学硕食品专业求调剂院校 20+7 孤独的狼爱吃羊 2026-04-12 29/1450 2026-04-16 09:00 by screening
[考研] 化工学硕294分,求导师收留 +32 yzyzx 2026-04-12 36/1800 2026-04-14 17:45 by lhj2009
[考研] 材料专业344求调剂 +17 hualkop 2026-04-10 22/1100 2026-04-14 16:21 by sxdj2
[考研] 各位老师好,求调剂,本科211,一志愿天津大学生物与医药学硕,差两名录取。 +11 路六六jjj 2026-04-13 11/550 2026-04-14 16:01 by zs92450
[考研] 一志愿沪9,326求生物学调剂 +10 刘墨墨 2026-04-13 10/500 2026-04-14 15:16 by zs92450
[考研] 考研求调剂 +12 子木呐 2026-04-12 13/650 2026-04-14 01:19 by 王珺璞
[考研] 考研英一数一338分 +9 长江大学东校区 2026-04-13 10/500 2026-04-14 00:41 by 王珺璞
[考研] 本科西工大 324求调剂 +5 wysyjs25 2026-04-10 5/250 2026-04-13 23:08 by pies112
[考研] 一志愿中南大学 0855 机械 286 求调剂 +11 不会吃肉 2026-04-12 11/550 2026-04-13 21:59 by bljnqdcc
[考研] 339求调剂 +4 hanwudada 2026-04-12 4/200 2026-04-13 12:03 by 蓝云思雨
[考研] 电气工程专硕320求调剂 +5 小麻子111 2026-04-10 5/250 2026-04-12 10:47 by zhouyuwinner
[考研] 359求调剂 +5 胃痉挛累了 2026-04-11 5/250 2026-04-11 19:55 by lbsjt
[考研] 311求调剂 +13 xyp想读书 2026-04-10 14/700 2026-04-11 09:41 by 猪会飞
[考研] 0858求调剂 5+5 Gky09300550, 2026-04-10 8/400 2026-04-10 19:13 by chemisry
[考研] 301求调剂 +5 149. 2026-04-10 5/250 2026-04-10 15:45 by 柴小白
[考研] 085800 能源动力求调剂 +6 阿biu啊啊啊啊啊 2026-04-10 6/300 2026-04-10 15:03 by hemengdong
信息提示
请填处理意见