CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

又是位图问题,位图用TCP/IP实现传输。出现问题不小,小弟请教。

楼主luocolor1()2006-03-18 19:07:21 在 VC/MFC / 基础类 提问

我想的是把位图看做一般的文件,用传输一般文件的办法传输位图。  
  从位图的存储格式来说,我想应该是可以的。(?)  
  但是,传输完后。大小比原图大了一点点。  
  可重要的是,位图显示不出来。用Windows图片传真和查看器看,没有预览。  
  现在,我就不知道是为什么了?  
  难道,我传输开始的时候位图就被做了相应的处理。晕。  
  哪位大哥大姐辛苦一下,告诉小弟我,怎么回事?怎么弄?  
  小弟感谢。 问题点数:20、回复次数:2Top

1 楼Mackz(在相互)回复于 2006-03-18 20:16:15 得分 0

你先说你怎么弄?Top

2 楼luocolor1()回复于 2006-03-19 00:27:55 得分 0

我也是到处看看,然后写的东西,^_^。  
  这个功能是我要做的一个东西的一个模块,所以我用的是从客户端点击发送按钮来触发传递数据事件的。  
   
  这是我第一次把自己的代码拿出来看,很乱。别笑。大哥们。^_^  
   
  int   recvLen=0;  
  CFile   myFile(_T("\\Storage   Card\\firsttry.bmp"),CFile::modeCreate   |CFile::modeWrite   |CFile::typeBinary);     //新建的file,用于接受数据。  
  //服务器端收到来自客户端的数据  
  void   CALLBACK   CTCPServerDlg::OnClientRead(CWnd*   pWnd,CTCPCustom_CE*   pTcpCustom,const   char   *   buf,int   len   )              
    //这是我看的例子上的,我觉得在这里用char不行,不过用BYTE也不行。?不知道了  
    //下面的有些变量只是用来debug用的,看些信息。我要的是把图片传递到firsttry。bmp中  
    //还有就是因为位图比较大,所以在用socket传的时候,虽然点了发送按钮,但是是经过n次  
    //才把数据传完的。所以用strRecvLen来标记总的接受的长度。strLen是一次接受的长度。  
    //  
  {  
   
   
  CString   strLen,strRecvLen;  
  strLen.Format(L"%d",len);  
  recvLen+=len;  
  strRecvLen.Format(L"%d",recvLen);  
        char   *data;  
  data=(char*)malloc(len);  
          memcpy(data,buf,len);  
   
   
         
  myFile.Seek(recvLen,CFile::begin);  
  myFile.Write(data,len);  
   
   
  CTCPServerDlg   *   pDlg   =   (CTCPServerDlg*)pWnd;  
  CListBox   *   pLstRecv   =   (CListBox*)pDlg->GetDlgItem(IDC_LSTRECV);  
  ASSERT(pLstRecv   !=   NULL);  
   
  pLstRecv->AddString(_T("************************************"));  
  pLstRecv->AddString(_T("来自:   ")   +   pTcpCustom->m_RemoteHost   );  
  pLstRecv->AddString(_T("数据长度:")+strLen);  
  pLstRecv->AddString(_T("数据长度:")+strRecvLen);  
  //pLstRecv->AddString(data);  
  if   (!pTcpCustom->SendData("recv   ok",strlen("recv   ok")))  
  {  
  AfxMessageBox(_T("发送失败"));  
  }  
  }  
   
   
  //发送数据按钮单击事件代码  
  void   CTCPClientDlg::OnBtnsenddata()    
  {  
  LPCTSTR   lpszFileName=_T("\\Temp\\mapxiao.bmp");  
  CFile   file(lpszFileName,   CFile::modeRead|CFile::typeBinary);  
  int   sendLen=0;  
  sendLen=file.GetLength();  
          char   *   sendBuf;  
  sendBuf=(char*)::LocalAlloc(LPTR,sendLen);  
  file.ReadHuge(sendBuf,sendLen);  
  if   (!m_tcpClient.SendData(sendBuf,sendLen))  
  {  
  AfxMessageBox(_T("发送失败"));  
  }  
  delete[]   sendBuf;  
  sendBuf   =   NULL;  
  }Top

相关问题

  • 基于tcp/ip关于点对点的文件传输和文字消息的实现
  • 用tcp完成SOAP数据传输应该如何实现,
  • HELP ME!关于TCP/IP传输位图的问题.
  • 基于TCP/IP的视频传输?达人乱入!
  • 50分求购使用tcp/ip远程传输图片源程序
  • 在局域网中如何提高文件的传输效率(采用ip/tcp)?
  • 关于ASP.NET提取通过TCP/IP传输过来的数据问题!!
  • >>>>>>>>>>>>>>>>>>>紧急:拨号线路上实现TCP/IP,进者有分!
  • TCP/IP协议的实现文件是哪个
  • 怎么看TCP/IP详解 卷2:实现?

关键词

  • 数据
  • plstrecv
  • strrecvlen
  • sendlen
  • 小弟
  • cfile
  • recvlen
  • ptcpcustom
  • sendbuf
  • addstring

得分解答快速导航

  • 帖主:luocolor1

相关链接

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

广告也精彩

反馈

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