⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gprs,c#,拨号,pocket pc.txt

📁 gprs,C#,dail,pocker PC
💻 TXT
字号:
因为当我们做一个http请求时ppc会自动拨号,但是如果我们使用UDP做数据传输时是不会自动拨号的,为此我曾经给windowmobile@microsoft.com发邮件询问怎样用C#实现GPRS拨号.MS告诉我可以先做一个HTTP请求.做为一个应急的方案确实可以这样做.
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Runtime.InteropServices;
using System.Threading;
using System.Collections;
namespace PPc.GPRS
{
    public class GPRSConnection 
    { 
        const int S_OK = 0; 
        const uint CONNMGR_PARAM_GUIDDESTNET = 0x1; 
        const uint CONNMGR_FLAG_PROXY_HTTP = 0x1; 
        const uint CONNMGR_PRIORITY_USERINTERACTIVE = 0x08000; 
        const uint INFINITE = 0xffffffff; 
        const uint CONNMGR_STATUS_CONNECTED = 0x10; 
        static Hashtable ht = new Hashtable(); 
        static GPRSConnection() 
        { 
            ManualResetEvent mre = new ManualResetEvent(false); 
            mre.Handle = ConnMgrApiReadyEvent(); 
            mre.WaitOne(); 
            CloseHandle(mre.Handle); 
        } 
        ~GPRSConnection() 
        { 
            ReleaseAll(); 
        } 
        public static bool Setup(Uri url) 
        { 
            return Setup(url.ToString()); 
        } 
        public static bool Setup(string urlStr) 
        { 
            ConnectionInfo ci = new ConnectionInfo(); 
            IntPtr phConnection = IntPtr.Zero; 
            uint status = 0;
            if (ht[urlStr] != null)
            {
                return true;
            }
            if (ConnMgrMapURL(urlStr, ref ci.guidDestNet, IntPtr.Zero) != S_OK)
            {
                return false;
            }
            ci.cbSize = (uint)Marshal.SizeOf(ci); 
            ci.dwParams = CONNMGR_PARAM_GUIDDESTNET; 
            ci.dwFlags = CONNMGR_FLAG_PROXY_HTTP; 
            ci.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE; 
            ci.bExclusive = 0; 
            ci.bDisabled = 0; 
            ci.hWnd = IntPtr.Zero; 
            ci.uMsg = 0; 
            ci.lParam = 0;
            if (ConnMgrEstablishConnectionSync(ref ci, ref phConnection, INFINITE, ref status) != S_OK && status != CONNMGR_STATUS_CONNECTED)
            {
                return false;
            }
            ht[urlStr] = phConnection; 
            return true; 
        } 
        public static bool Release(Uri url) 
        { 
            return Release(url.ToString()); 
        } 
        public static bool Release(string urlStr) 
        { 
            return Release(urlStr, true); 
        } 
        private static bool Release(string urlStr, bool removeNode) 
        { 
            bool res = true; 
            IntPtr ph = IntPtr.Zero;
            if (ht[urlStr] == null)
            {
                return true;
            }
            ph = (IntPtr)ht[urlStr];
            if (ConnMgrReleaseConnection(ph, 1) != S_OK)
            {
                res = false;
            }
            CloseHandle(ph);
            if (removeNode)
            {
                ht.Remove(urlStr);
            }
            return res; 
        } 
        public static void ReleaseAll() 
        { 
            foreach (DictionaryEntry de in ht) 
            { 
                Release((string)de.Key, false); 
            } 
            ht.Clear(); 
        } 
        [StructLayout(LayoutKind.Sequential)]  
        public struct ConnectionInfo 
        { 
            public uint cbSize; 
            public uint dwParams; 
            public uint dwFlags; 
            public uint dwPriority; 
            public int bExclusive; 
            public int bDisabled; 
            public Guid guidDestNet; 
            public IntPtr hWnd; 
            public uint uMsg; 
            public uint lParam; 
            public uint ulMaxCost;
            public uint ulMinRcvBw; 
            public uint ulMaxConnLatency;        
        } 
        [DllImport("cellcore.dll")]       
        private static extern int ConnMgrMapURL(string pwszURL, ref Guid pguid, IntPtr pdwIndex); 
        [DllImport("cellcore.dll")] 
        private static extern int ConnMgrEstablishConnectionSync(ref ConnectionInfo ci, ref IntPtr phConnection, uint dwTimeout, ref uint pdwStatus); 
        [DllImport("cellcore.dll")] private static extern IntPtr ConnMgrApiReadyEvent();        
        [DllImport("cellcore.dll")] private static extern int ConnMgrReleaseConnection(IntPtr hConnection, int bCache);        
        [DllImport("coredll.dll")] private static extern int CloseHandle(IntPtr hObject);    
    }
}

e.g :
GPRSConnection .Setup("http://www.microsoft.com");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -