dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
一个Socket传输文件的例子
来源:不详     作者:    

时间问题,在转载这个代码前,没有经过测试,大家自己测试一下,如果有什么问题,再跟我们联系。

//1:显示文件进度


//2:可以随时终止传输过程


//发送数据线程


UINT SendDataThread(LPVOID lpParam);


//接收数据线程


UINT ReceiveDataThread(LPVOID lpParam);


//发送数据按钮消息响应


void CTzg004Dlg::OnButtonSend()


{


   // TODO: Add your control notification handler code here


   //初始化数据发送结束标志


   m_bSendEnd=FALSE;


   //初始化数据接收结束标志


   m_bRecEnd=FALSE;


   //更新对话框数据


   UpdateData(TRUE);


   //打开文件对话框


   CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,


     "所有文件 (*.*)|*.*||");


   if(dlg.DoModal()==IDOK)


   {


     m_strFileName=dlg.GetPathName();


     //开始发送数据线程


     AfxBeginThread(SendDataThread,this,THREAD_PRIORITY_NORMAL);


   }


}


//接收数据按钮消息响应


void CTzg004Dlg::OnButtonReceive()


{


   // TODO: Add your control notification handler code here


   //初始化数据发送结束标志


   m_bSendEnd=FALSE;


   //初始化数据接收结束标志


   m_bRecEnd=FALSE;


   UpdateData(TRUE);


   //开始接收数据线程


   AfxBeginThread(ReceiveDataThread,this,THREAD_PRIORITY_NORMAL);


}


//终止发送按钮消息响应


void CTzg004Dlg::OnButtonSendEnd()


{


   // TODO: Add your control notification handler code here


   //设置发送数据结束标志


   m_bSendEnd=TRUE;


}


//终止接收按钮消息响应


void CTzg004Dlg::OnButtonRecEnd()


{


   // TODO: Add your control notification handler code here


   //设置接收数据结束标志


   m_bRecEnd=TRUE;


}


UINT SendDataThread(LPVOID lpParam)


{


   CTzg004Dlg *pDlg=(CTzg004Dlg *)lpParam;


   CFile file;


   if( !file.Open(pDlg->m_strFileName, CFile::modeRead) )


   {


     AfxMessageBox("打开文件出错!");


     return 0;


   }


   CSocket sockTemp;


   CString str,str1;


   sockTemp.Create(pDlg->m_iDataPort1); //得到端口号


   sockTemp.Listen(1);//只接受一个连接


   CSocket sockSend;


   //设置发送按钮禁止


   pDlg->GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE);


   sockTemp.Accept(sockSend);//注意,sockTemp已交了自己的地址到sockSend,故不用Close


   //打开发送终止按钮


   pDlg->GetDlgItem(IDC_BUTTON_SEND_END)->EnableWindow(TRUE);

[1]   

 

 

上一篇:DirectDraw 游戏编程基础(3)   下一篇:FLEX优秀开源项目介绍
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·DirectDraw 游戏编程基础(3)
·用VC++6.0编写Proxy服务器
·一个简单的SOAP服务应用
·MFC的子类化技术
·InstallShiled 中文字体安装工具
·使用strcpy的几点心得
·VC++:访问和修改系统注册表
·文档 视图 框架窗口间的关系和消
·利用VC++获取异构型数据库库结构
·轻轻松松C to C++ (一)
·给你的应用程序添加动态鼠标
·Visual C++ 6.0的文档/视结构
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763