會顯示 cannot execute XXX.EXE
而且只要有 call InternetOpen() 就會顯示 cannot execute \USB Disk\Ftpce.exe
如果隨便亂打 abcd.exe 只會顯示 cannot execute abcd.exe
甚至連第一行的 printf 都不會執行
但是把InterOpen() 等函式拿掉
就可正常執行
try 很多方法,最後發現原因在於System Image 中沒有 include wininet 的元件
InternetOpen(), InternetConnect(), FtpOpenFile() 都要include wininet.lib
而 WinInet 在 Browser componet (IE6) 下面,叫做 Windows Internet Services
加入之後就ok了
總之 要使用 WinInet functions,要先加入 Windows Internet Services.
然後
#include
link wininet.lib ( at \WINCE500\PUBLIC\IE\OAK\LIB\....)
可以正常Link & Run 之後
就開始寫 ftp program
前面很順利,但是用到 FtpPutFile 時
卻回傳 550 Forbidden filename
卡住了好久後發現 forbidden filename 是因為
1. 在那個目錄裏沒有權限寫入
2. 路徑不對 在Linux 下的路徑要用 / 而不是 \
所以要指定 /Public/test.wav 而不是 \\Public\\test.wav
或 /test.wav
然後使用 FtpPutFile 之後 發現速度甚至比SMB還要慢
應該是內部處理很差的關係(或者是buffer 太小)
改用 FtpOpenFile + InternetWriteFile, buffer size 512K之後就正確了
比SMB還要快一些 ~ 10%-15%
1 則留言:
你好,
我是wince新手,最近接觸wince ftp client develope,
需要參考些source code,我使用csocket去寫,有些解不掉的bug,
希望能拿你的source code來參考
可以寄給我嗎,謝謝
ys.liang105@gmail.com
張貼留言