[英]Creating persistent RAS connection with opennetcf Ras in Windows CE 6.0
我需要在具有Windows ce 6的PDA中創建GPRS連接。現在通常我必須使用制造商的dll來創建該連接,但是他們說他們使用ras來完成此操作。 使用它的唯一問題是我在.net c#中編程,而該庫是不受管的代碼之一。
幸運的是,我來自opennetcf ras庫,該庫已經對Windows ras庫進行了必要的pInvokes調用,唯一的問題是文檔不佳。
然后,我創建了一個庫,該庫將在Windows上調用並建立必要的GPRS連接。 我使用的葡萄牙電信運營商使用以下定義:
Operator Name: Optimus P
Apn: umts
Password: *******
User: ******
咨詢gsm模塊定義,我具有以下調制解調器設置:
Connection Name: GPRS
Device: Hayes Compatible on COM1:
Baund Rate:115200
Data Bits: 8
Parity:1
Stop Bits: 1
Flow Control: Hardware
當然還有額外的設置(或者我怎么稱呼它為atCall)
+cgdcont=1, "ip", "umts"
當我使用控制面板並使用該配置文件進行連接時,此設置可以連接,並且我可以無錯誤地調用所有Web服務。 它還顯示了調制解調器的額外配置文件,其中顯示了設備的設置,包括ip地址,子網掩碼,甚至是默認網關。
問題是,當我使用自己創建的庫以編程方式創建gprs連接,然后在某個時候調用webservices時,將引發Web異常:無法解析遠程名稱。 我也檢查了一下,但沒有出現多余的圖標,但是如果我看到GPRS狀態,它就會在連接時顯示出來。
創建,銷毀和查詢連接是否存在的代碼如下:
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庫建立可行的連接
最好的問候
似乎您撥入時獲得的GPRS連接的網絡接口未使用正確的DNS服務器進行配置。 或者,您的服務呼叫所需的域名可能是錯誤的。
要驗證這一點:
僅僅是域名無法解析的特定Web服務嗎? 總是一樣嗎? 別人工作嗎? 建立連接后,能否通過編程方式簡單地通過HTTP GET來獲取類似http://stackoverflow.com的內容 ?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.