首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows CE 6.0中使用opennetcf RAS创建永久Ras连接

在Windows CE 6.0中使用opennetcf RAS创建永久Ras连接
EN

Stack Overflow用户
提问于 2011-02-01 00:11:28
回答 1查看 3.8K关注 0票数 0

我需要在装有windows ce 6的PDA中创建GPRS连接,通常情况下,我必须使用制造商的dll来创建,但他们说他们使用ras来实现。使用它的唯一问题是我用.net c#编程,而这个库是一个非托管代码库。

幸运的是,我遇到了opennetcf ras库,它已经为windows ras库完成了必要的pInvokes,唯一的问题是糟糕的文档。

然后我创建了一个库,它可以调用并设置windows上必要的GPRS连接。我使用的是一家葡萄牙电信运营商,其定义如下:

代码语言:javascript
复制
Operator Name: Optimus P
Apn:  umts
Password: *******
User: ******

参考gsm模块定义,我有以下调制解调器设置:

代码语言:javascript
复制
Connection Name: GPRS
Device: Hayes Compatible on COM1:
Baund Rate:115200
Data Bits: 8
Parity:1
Stop Bits: 1
Flow Control: Hardware

当然还有额外的设置(或者我怎么叫它atCall)

代码语言:javascript
复制
+cgdcont=1, "ip", "umts"

此设置当我使用控制面板并使用该配置文件进行连接时,它会连接,并且我可以调用所有when服务,而不会出现错误。它还会显示调制解调器的附加配置文件,该配置文件显示设备的设置,包括It地址、子网掩码甚至默认网关。

问题是,当我使用自己创建的库以编程方式创建gprs连接,然后在某个时候调用web服务时,它会抛出一个web异常:无法解析远程名称。我还检查了一下,没有显示额外的图标,但如果我看到GPRS状态,它就会显示为已连接。

创建、销毁和查询是否存在连接的代码如下:

代码语言:javascript
复制
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using OpenNETCF.Net;
using OpenNETCF.Diagnostics;

namespace gsmAdapterNet
{
/// <summary>
/// GPRS Connection class
/// </summary>
public class GPRS
{
    private static string connectionName = "GPRS";


    /// <summary>
    /// Connects the GPRS.
    /// </summary>
    /// <returns></returns>
    public static bool ConnectGPRS()
    {

            //precisamos de obter as connecoes e ligar

            RasEntryCollection connecoesPossiveis = Ras.Entries;
            RasEntry _currentEntry = connecoesPossiveis[connectionName];
            _currentEntry.RasStatus += new RasNotificationHandler(RasStatusHandler);
            RasError resultado = _currentEntry.Dial(false);
            if (resultado == RasError.Success)
                return true;
            else
                return false;


    }

    static void RasStatusHandler(int hConn, RasConnState State, RasError ErrorCode)
    {
        Logger.WriteLine("");
        Logger.WriteLine("RAS STATUS: " + ErrorCode.ToString() + " , State: " + State.ToString());
    }


    /// <summary>
    /// Disconnects the GPRS.
    /// </summary>
    /// <returns></returns>
    public static void DisconnectGPRS()
    {
        RasEntryCollection entradas = Ras.Entries;
        foreach (RasEntry possivelEntrada in entradas)
        {
            if (possivelEntrada.Name == connectionName)
            {
                possivelEntrada.Hangup();
            }
        }


    }

    /// <summary>
    /// Determines whether this instance is connected.
    /// </summary>
    /// <returns>
    ///     <c>true</c> if this instance is connected; otherwise, <c>false</c>.
    /// </returns>
    public static bool isConnected()
    {

        RasConnection[] conecoes = Ras.ActiveConnections;
        foreach (RasConnection conecao in conecoes)
        {
            if (conecao.Name == connectionName)
                return true;
        }
        return false;

    }

    /// <summary>
    /// Dumps the ras entries.
    /// </summary>
    public static void DumpRasEntries()
    {
        foreach (RasEntry entry in Ras.Entries)
        {
            Logger.DumpRasEntry(entry);
        }
    }

}

}

因此,继续回答这个问题:我如何创建与opennetcf ras库的可行连接?

最好的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-01 03:36:21

您拨入时获得的GPRS连接的网络接口似乎没有配置正确的DNS服务器。或者,您的服务调用所需的域名可能是错误的。

要验证这一点,请执行以下操作:

是否只有一个特定的web服务无法解析域名?它总是一样的吗?其他人也能工作吗?在建立连接之后,您能简单地以编程方式通过HTTP获取类似于http://stackoverflow.com的内容吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4853123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档