<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JUST DO IT ~

    我只想當(dāng)個(gè)程序員

    window c# 撥號 網(wǎng)絡(luò)相關(guān)的 api


    很管用的撥號類網(wǎng)上找到的.






    namespace ConsoleApplication1
    {
     
    /*
    ADSL自動(dòng)撥號類,前提是在系統(tǒng)中已經(jīng)有了一個(gè)寬帶撥號連接
    調(diào)用代碼:
    RASDisplay ras = new RASDisplay();
    ras.Disconnect();//斷線
    ras.Connect("adsl");//撥號 

     
    */

    public struct RASCONN
    {
        
    public int dwSize;
        
    public IntPtr hrasconn;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst
    =257)]
        
    public string szEntryName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst
    =17)]
        
    public string szDeviceType;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst
    =129)]
        
    public string szDeviceName;
    }

    [StructLayout(LayoutKind.Sequential,CharSet
    =CharSet.Auto)]
    public struct RasStats
    {
        
    public int dwSize;
        
    public int dwBytesXmited;
        
    public int dwBytesRcved;
        
    public int dwFramesXmited;
        
    public int dwFramesRcved;
        
    public int dwCrcErr;
        
    public int dwTimeoutErr;
        
    public int dwAlignmentErr;
        
    public int dwHardwareOverrunErr;
        
    public int dwFramingErr;
        
    public int dwBufferOverrunErr;
        
    public int dwCompressionRatioIn;
        
    public int dwCompressionRatioOut;
        
    public int dwBps;
        
    public int dwConnectionDuration;
    }

    [StructLayout(LayoutKind.Sequential,CharSet
    =CharSet.Auto)]
    public struct RasEntryName 

        
    public int dwSize; 
        
    //[MarshalAs(UnmanagedType.ByValTStr,SizeConst=(int)RasFieldSizeConstants.RAS_MaxEntryName + 1)]
        public string szEntryName; 
        
    //#if WINVER5
        
    //  public int dwFlags;
        
    //  [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260+1)]
        
    //  public string szPhonebookPath;
        
    //#endif
    }
    public class RAS

    {


        [DllImport(
    "rasapi32.dll", EntryPoint = "RasEnumConnectionsA", SetLastError=true)]

        
    internal static extern int RasEnumConnections
            (
            
    ref RASCONN lprasconn, // buffer to receive connections data
            ref int lpcb, // size in bytes of buffer
            ref int lpcConnections // number of connections written to buffer
            );


        [DllImport(
    "rasapi32.dll",CharSet=CharSet.Auto)]
        
    internal static extern uint RasGetConnectionStatistics(
            IntPtr hRasConn,       
    // handle to the connection
            [In,Out]RasStats lpStatistics  // buffer to receive statistics
            );
        [DllImport(
    "rasapi32.dll",CharSet=CharSet.Auto)]
        
    public extern static uint RasHangUp(
            IntPtr hrasconn  
    // handle to the RAS connection to hang up
            );

        [DllImport(
    "rasapi32.dll",CharSet=CharSet.Auto)]
        
    public extern static uint RasEnumEntries (
            
    string reserved,              // reserved, must be NULL
            string lpszPhonebook,         // pointer to full path and
            
    //  file name of phone-book file
            [In,Out]RasEntryName[] lprasentryname, // buffer to receive
            
    //  phone-book entries
            ref int lpcb,                  // size in bytes of buffer
            out int lpcEntries             // number of entries written
            
    //  to buffer
            );

        [DllImport(
    "wininet.dll",CharSet=CharSet.Auto)]
        
    public extern static int InternetDial(
            IntPtr hwnd,
            [In]
    string lpszConnectoid, 
            
    uint dwFlags,
            
    ref int lpdwConnection,
            
    uint dwReserved
            );

        
    public RAS()
        {

        }

            
    }
    public enum DEL_CACHE_TYPE //要?jiǎng)h除的類型。
    {
        File,
    //表示internet臨時(shí)文件
        Cookie //表示Cookie
    };
    public class RASDisplay
    {
        [DllImport(
    "wininet.dll",CharSet=CharSet.Auto)]
        
    public static extern bool  DeleteUrlCacheEntry(
            DEL_CACHE_TYPE type
            );
        
    private string m_duration;
        
    private string m_ConnectionName;
        
    private string[] m_ConnectionNames;
        
    private double m_TX;
        
    private double m_RX;
        
    private bool m_connected;
        
    private IntPtr m_ConnectedRasHandle;

        RasStats status 
    = new RasStats();
        
        
        
    public RASDisplay()
        {
            m_connected 
    = true;

            RAS lpras 
    = new RAS();
            RASCONN lprasConn 
    = new RASCONN();

            lprasConn.dwSize 
    = Marshal.SizeOf(typeof(RASCONN));
            lprasConn.hrasconn 
    = IntPtr.Zero;

            
    int lpcb = 0;
            
    int lpcConnections = 0;
            
    int nRet = 0;
            lpcb 
    = Marshal.SizeOf(typeof(RASCONN));


            nRet 
    = RAS.RasEnumConnections(ref lprasConn, ref lpcb, ref  lpcConnections);


            
    if(nRet != 0)

            {
                m_connected 
    = false;
                
    return;

            }

            
    if(lpcConnections > 0)
            {


                
    //for (int i = 0; i < lpcConnections; i++)

                
    //{
                RasStats stats = new RasStats();

                m_ConnectedRasHandle 
    = lprasConn.hrasconn;
                RAS.RasGetConnectionStatistics(lprasConn.hrasconn, stats);


                m_ConnectionName 
    = lprasConn.szEntryName;

                
    int Hours = 0;
                
    int Minutes = 0;
                
    int Seconds = 0;

                Hours 
    = ((stats.dwConnectionDuration /1000/3600);
                Minutes 
    = ((stats.dwConnectionDuration /1000/60- (Hours * 60);
                Seconds 
    = ((stats.dwConnectionDuration /1000)) - (Minutes * 60- (Hours * 3600);


                m_duration 
    = Hours  +  " hours "  + Minutes + " minutes " + Seconds + " secs";
                m_TX 
    = stats.dwBytesXmited;
                m_RX 
    = stats.dwBytesRcved;


                
    //}


            }
            
    else
            {
                m_connected 
    = false;
            }


            
    int lpNames = 1;
            
    int entryNameSize = 0;
            
    int lpSize = 0;
            RasEntryName[] names 
    = null;

            entryNameSize
    =Marshal.SizeOf(typeof(RasEntryName));
            lpSize
    =lpNames*entryNameSize;

            names
    =new RasEntryName[lpNames];
            names[
    0].dwSize=entryNameSize;

            
    uint retval = RAS.RasEnumEntries(null,null,names,ref lpSize,out lpNames);

            
    //if we have more than one connection, we need to do it again
            if(lpNames > 1)
            {
                names
    =new RasEntryName[lpNames];
                
    for(int i=0;i<names.Length;i++)
                {
                    names[i].dwSize
    =entryNameSize;
                }

                retval 
    = RAS.RasEnumEntries(null,null,names,ref lpSize,out lpNames);

            }
            m_ConnectionNames 
    = new string[names.Length];


            
    if(lpNames>0)
            {
                
    for(int i=0;i<names.Length;i++)
                {

                    m_ConnectionNames[i] 
    = names[i].szEntryName;

                }
            }
        }

        
    public string Duration
        {
            
    get
            {
                
    return m_connected ? m_duration : "";
            }
        }

        
    public string[] Connections
        {
            
    get
            {
                
    return m_ConnectionNames;
            }
        }

        
    public double BytesTransmitted
        {
            
    get
            {
                
    return m_connected ? m_TX : 0;
            }
        }
        
    public double BytesReceived
        {
            
    get
            {
                
    return m_connected ? m_RX :  0;

            }
        }
        
    public string ConnectionName
        {
            
    get
            {
                
    return m_connected ? m_ConnectionName : "";
            }
        }
        
    public bool IsConnected
        {
            
    get
            {
                
    return m_connected;
            }
        }

        
    public int Connect(string Connection)
        {
            
    int temp = 0;
            
    uint INTERNET_AUTO_DIAL_UNATTENDED = 2;
            
    int retVal = RAS.InternetDial(IntPtr.Zero,Connection,INTERNET_AUTO_DIAL_UNATTENDED,ref temp,0);
            
    return retVal;
        }
        
    public void Disconnect()
        {
            RAS.RasHangUp(m_ConnectedRasHandle);
        }
    }





    }


    posted on 2008-06-25 23:20 小高 閱讀(1050) 評論(0)  編輯  收藏 所屬分類: DotNet

    導(dǎo)航

    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類(352)

    收藏夾(19)

    關(guān)注的blog

    手冊

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲理论片在线中文字幕| 在线视频免费国产成人| 亚洲gv白嫩小受在线观看| 中文字幕免费观看视频| 精品国产亚洲一区二区三区| 精品国产免费一区二区三区香蕉| 亚洲综合AV在线在线播放| 免费人人潮人人爽一区二区| 亚洲国产综合久久天堂| 国产久爱免费精品视频| 亚洲av午夜成人片精品网站| 亚洲免费视频网站| 2020年亚洲天天爽天天噜| 免费无码专区毛片高潮喷水 | 桃子视频在线观看高清免费视频| 久久被窝电影亚洲爽爽爽| 2015日韩永久免费视频播放| 毛片免费视频观看| 精品韩国亚洲av无码不卡区| 亚洲免费日韩无码系列| 免费看黄的成人APP| 亚洲a级片在线观看| 成人免费无码精品国产电影| 国产vA免费精品高清在线观看| 亚洲AV无码国产精品色午友在线| 黄网站色在线视频免费观看| 亚洲国产精品成人午夜在线观看 | 性xxxx视频播放免费| 免费在线观看亚洲| 亚洲成在人线av| 免费无码又黄又爽又刺激| 深夜久久AAAAA级毛片免费看| 香蕉视频在线观看亚洲| 成人爱做日本视频免费| 日韩av无码免费播放| 亚洲性色精品一区二区在线| 在线观看午夜亚洲一区| 免费精品国偷自产在线在线| 一级片在线免费看| 亚洲卡一卡2卡三卡4麻豆| 亚洲日韩中文字幕日韩在线|