6335|11

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

怎样在winCE里用socket通信给FTP上传文件? [复制链接]

如题:小弟想在winCE里用socket通信给远程主机服务器FTP上传文件(现在是上传的bmp文件),现在连接远程FTP正常,上传的文件却大小都为零,打不开,为什么?是不是要设置为二进制传输模式呢???主要代码如下:


        int  iEnd =0;
        int  ilen =0;
        long iTmp =0;
        CFile file;
        if(!file.Open(L"\\windows\\windowsce.bmp", CFile::modeRead | CFile::typeBinary))
        {
                AfxMessageBox(L"打开文件失败");
                //return -1;
        }
        long lFileSize = file.GetLength();

        char temp[1024];                                //首先用来存放文件大小,后面用作发送文件缓冲区
        memset(temp,0,sizeof(temp));

        _ltoa(lFileSize, temp, 10);


        while (1)
        {
                ilen = file.Read(temp, 1024);
                if (ilen==0)
                {
                //        MessageBox("break");
                        break;
                }
                iEnd = send(sockFile,temp,ilen,0);
                if (iEnd==SOCKET_ERROR)
                {
                        //strError.Format("Send File:%d",error=WSAGetLastError());
                   // AfxMessageBox(strError);
                        AfxMessageBox(L"strError");
                        break;
                }
                iTmp +=iEnd;
                m_JDT.SetPos(iTmp);
       
        }


        file.Close();
            
    closesocket(sockClient);
    WSACleanup();
此帖出自WindowsCE论坛

最新回复

是不是我在读文件时没有处理好字节转换的问题??EVC真是麻烦呀,什么都不支持!!!  详情 回复 发表于 2009-12-14 16:53
点赞 关注
 

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。
2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。
是不是我在ASCII方式下传输二进制文件的原因呢??
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没有人会吗?高手出招呀,急死了。。。。。
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
我用TCP/IP发送就可以 给你个参考代码
//发送
void CTCPIPDlg::OnSend()
{
        // TODO: Add your control notification handler code here



       
        int nErrorCode;
        int cnt = 0, actlen = 0;

        if (m_Socket == NULL)
                return;

        UpdateData(TRUE);
        int sendlen = m_SendEdit.GetLength();                                 //取得输入字符串长度
        char *psendbuff = new char[sendlen];

        for(int i = 0; i < sendlen;i++)
                psendbuff = (char)m_SendEdit.GetAt(i);                 // 转换为单字节字符
       
        while(cnt < sendlen)
        {
                actlen = send(m_Socket, psendbuff + cnt, sendlen - cnt, 0);
                if (actlen == SOCKET_ERROR )
                {
                        MessageBox(_T("TCP 数据发送失败!"));
                        nErrorCode = WSAGetLastError();
                        delete[] psendbuff;
                        return;
                }

                cnt = cnt + actlen;
                if (cnt < sendlen)
                        Sleep(1000);
        }
       
        delete[] psendbuff;



       
}
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
学习了一把。。。
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
还是不行呀
怎么办呀,试了快两周了呀
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
坚定不移地顶!!!
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
WinCE下有封装好的FTP API啊,直接用这个会比较方便一点。
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
FtpOpenFile等API,具体你可以查看一下帮助,
自己用Socket来实现,估计会比较麻烦一点。
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 sunrain_hjb 的回复:
WinCE下有封装好的FTP API啊,直接用这个会比较方便一点。

哪个API是不是那个FTPputFile,FTPgetfile这样的函数????
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
上面的函数不能实现适时地看到上传进度呀!!!而且速度很慢!!!我想用socket来实现,这样既能看到进度条,适时的上传进度,而且速度也能得到提升!!!大家来看看吧,这真是一个旷世难题呀!!!
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
是不是我在读文件时没有处理好字节转换的问题??EVC真是麻烦呀,什么都不支持!!!
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表