我写了一个小程序,不知道为什么在开了WinGate后,该程序只能在Ftp服务器上建立一个零字节大小的文件,该文件没有任何数据,当我把WinGate关掉后,该文件可以正常上传,以下是函数代码,麻烦知道的朋友说一下原因,谢谢
HINTERNET hInternet_z = NULL;
HINTERNET hFtpSession_z = NULL;hInternet_z = InternetOpen(
        "WININET Sample Program",
        INTERNET_OPEN_TYPE_DIRECT,
        NULL,
        NULL,
        0);
if(hInternet_z==NULL)
{

return 1;
}
  
    hFtpSession_z = InternetConnect(
        hInternet_z,
        g_szServerAdd,
        g_nServerPort,
        g_szUserName ,
        g_szUserPassword ,
        INTERNET_SERVICE_FTP,
        0,
        0);
FtpPutFile(hFtpSession_z,“d:\\test.txt”,
“/test”,
FTP_TRANSFER_TYPE_BINARY, 
NULL);

解决方案 »

  1.   

    没看你的代码,既然可以上传,那代码应该是没问题的。
    Windows操作系统的Internet连接共享、WinGate、sygate、winroute、unix/linux的natd等软件,都是使用NAT协议来共享Internet连接。
      

  2.   

    说明你的FTP没有穿透NAT,
    原因是WINGATE太老了,
    你可以改变传输模式,例如该用PORT或者PASV方式来穿透,
    但是也不是解决的办法。
    最好的解决是使用WINXP的共享连接并开启UPNP功能,
    使用UPNP技术来穿透,不要使用WINGATE