CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

做传输时,用windows socket:send和recv,传图片时如何显示出来?

楼主tomcatlikegame(野猫)2001-12-24 11:59:28 在 VC/MFC / 基础类 提问

因为send和recv发送的是字符char如何变成图片的数据结构??? 问题点数:89、回复次数:7Top

1 楼eng(eng_llw)回复于 2001-12-24 12:43:22 得分 89

你定义一个文件指针CFile  
  发送端将图片文件读进文件流,循环发送  
  接收端同样也定义一个CFile,循环接收,边接收边写入文件  
  发送的图片文件,就在接收端有了拷贝  
  are   you   understand?Top

2 楼tomcatlikegame(野猫)回复于 2001-12-24 13:16:34 得分 0

能不能给个程序先Top

3 楼eng(eng_llw)回复于 2001-12-24 14:14:06 得分 0

no   problem!  
  please   wait...Top

4 楼eng(eng_llw)回复于 2001-12-24 14:26:26 得分 0

server:  
  //结构体  
  typedef   struct   _SOCKET_STREAM_FILE_INFO   {  
   
          TCHAR               szFileTitle[128];                                       //文件的标题名  
          DWORD               dwFileAttributes;                                       //文件的属性  
          FILETIME         ftCreationTime;                                           //文件的创建时间  
          FILETIME         ftLastAccessTime;                                       //文件的最后访问时间  
          FILETIME         ftLastWriteTime;                                         //文件的最后修改时间  
          DWORD               nFileSizeHigh;                                             //文件大小的高位双字  
          DWORD               nFileSizeLow;                                               //文件大小的低位双字  
          DWORD               dwReserved0;                                                 //保留,为0  
          DWORD               dwReserved1;                                                 //保留,为0  
   
  }   SOCKET_STREAM_FILE_INFO,   *   PSOCKET_STREAM_FILE_INFO;  
  ...  
  //................  
                    CFile   myFile;  
                    CSocket   sockSrvr;  
  sockSrvr.Create(800);  
  sockSrvr.Listen();  
  CSocket   sockRecv;  
  sockSrvr.Accept(sockRecv);  
   
  SOCKET_STREAM_FILE_INFO StreamFileInfo;  
  WIN32_FIND_DATA                           FindFileData;  
   
  FindClose(FindFirstFile(Dlg.GetPathName(),&FindFileData));  
          memset(&StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));  
          strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle());  
   
          StreamFileInfo.dwFileAttributes           =               FindFileData.dwFileAttributes;  
          StreamFileInfo.ftCreationTime               =               FindFileData.ftCreationTime;  
          StreamFileInfo.ftLastAccessTime           =               FindFileData.ftLastAccessTime;  
          StreamFileInfo.ftLastWriteTime             =               FindFileData.ftLastWriteTime;  
          StreamFileInfo.nFileSizeHigh                 =               FindFileData.nFileSizeHigh;  
          StreamFileInfo.nFileSizeLow                   =               FindFileData.nFileSizeLow;  
   
  sockRecv.Send(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));  
   
  UINT   dwRead=0;  
  while(dwRead<StreamFileInfo.nFileSizeLow)  
  {  
  byte*   data   =   new   byte[1024];  
  UINT   dw=myFile.Read(data,   1024);  
  sockRecv.Send(data,   dw);  
  dwRead+=dw;  
  }  
  myFile.Close();  
  sockRecv.Close();  
  客户端:  
  ...  
  SOCKET_STREAM_FILE_INFO   StreamFileInfo;  
  sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));  
   
  CFile   destFile(StreamFileInfo.szFileTitle,   CFile::modeCreate   |   CFile::modeWrite   |   CFile::typeBinary);  
   
  UINT   dwRead   =   0;  
  while(dwRead<StreamFileInfo.nFileSizeLow)  
  {  
  byte*   data   =   new   byte[1024];  
  memset(data,0,1024);  
   
  UINT   dw=sockClient.Receive(data,   1024);  
  destFile.Write(data,   dw);  
   
  dwRead+=dw;  
  }  
   
  SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,  
                                  &StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);  
  destFile.Close();  
  SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);  
  sockClient.Close();  
   
  载自www.vckbase.com部分代码!Top

5 楼tomcatlikegame(野猫)回复于 2001-12-24 14:33:24 得分 0

xiexieTop

6 楼eng(eng_llw)回复于 2001-12-24 14:39:14 得分 0

甭客气!Top

7 楼xtky_limi(窗外细雨)回复于 2001-12-24 14:40:48 得分 0

listenTop

相关问题

  • socket传输
  • socket异步传输数据
  • Socket文件传输,急急。。
  • 用socket传输文件
  • socket数据传输问题?
  • 紧急::用socket怎么从windows客户端往linux服务器端传输打文件?
  • 关于异步Socket传输问题
  • 怎样通过socket传输图像?
  • socket的传输大小问题:
  • socket大文件传输问题

关键词

  • 文件
  • socket
  • socksrvr
  • 接收
  • 图片
  • filetime
  • cfile
  • 发送
  • stream
  • dword

得分解答快速导航

  • 帖主:tomcatlikegame
  • eng

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo