zoukankan      html  css  js  c++  java
  • C#]Use wininet.dll to realize ftp functionPart One :function list《转》

    前段时间研究FTP,利用FTPClient在进行FTP文件传输时如果FTP站点不支持PASV模式,而内网对PORT模式也有限制的时候,多次测试未能成功,转换思路,考虑用WIN API。成功地实现了用C#对WININET.DLL的平台调用,下面将里面用到的函数列表如下:
    //下面两个是在实现FTP过程中用到的两个数据结构
    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]
      public class WIN32_FIND_DATA
      {
       public UInt32 dwFileAttributes=0;
       public FILETIME ftCreationTme;
       public FILETIME ftLastAccessTime;
       public FILETIME ftLastWriteTime;
       public UInt32 nFileSizeHigh=0;
       public UInt32 nFileSizeLow=0;
       public UInt32 dwReserved0=0;
       public UInt32 dwReserved1=0;
       [MarshalAs( UnmanagedType.ByValTStr, SizeConst=256)] public string cFileName=null;
       [MarshalAs( UnmanagedType.ByValTStr, SizeConst=14)] public string cAlternateFileName=null;
      };


      [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]
      public class FILETIME
      {
       public int dwLowDateTime=0;
       public int dwHighDateTime=0;
      };
     
    //以下是对WININET.DLL中的重要函数的托管转换
      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool InternetGetLastResponseInfo(ref uint ulError,
       [MarshalAs(UnmanagedType.LPTStr)] string strBuffer, ref uint ulBufferLength);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern IntPtr InternetOpen(string strAppName, ulong
       ulAccessType, string strProxy, string strProxyBypass, ulong ulFlags);
     
      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool InternetFindNextFile(IntPtr hFind,[In,Out] WIN32_FIND_DATA
       dirData);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern IntPtr InternetConnect(IntPtr ulSession, string
       strServer, uint ulPort, string strUser, string strPassword, uint ulService, uint ulFlags,
       uint ulContext);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool InternetGetConnectedState(ref uint ulFlags, uint
       ulReserved);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool FtpSetCurrentDirectory(IntPtr ulSession, string
       strPath);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern IntPtr FtpFindFirstFile(IntPtr ulSession, string strPath
       , [In, Out] WIN32_FIND_DATA dirData, ulong ulFlags, ulong ulContext);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool FtpGetFile(IntPtr ulSession, string strRemoteFile,
       string strLocalFile, bool bolFailIfExist, ulong ulFlags, ulong ulInetFals, ulong
       ulContext);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool FtpPutFile(IntPtr ulSession, string strLocalFile,
       string strRemoteFile, ulong ulFlags, ulong ulContext);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool FtpDeleteFile(IntPtr ulSession, string strFileName);

      [DllImport("wininet.dll", CharSet = CharSet.Auto)]
      public static extern bool InternetCloseHandle(IntPtr ulSession);
     
    在WININET.DLL中还有很多其他功能的函数,详细内容请看:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/wininet_reference.asp

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wacle/archive/2004/09/22/113599.aspx

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/kingwangzhen/p/1645192.html
Copyright © 2011-2022 走看看