私はWM6のNTRIPクライアントで書いています。基本的に、最初に構成を送信することにより、ソケットを使用してサーバーからデータを取得しています。しかし、同じデバイス上のGPRS接続を介して動作させることはできません。
このメッセージを送信します。
Get / HTTP/1.0
User-Agent: NTRIP client
Accept: */*
Connection: close
このサーバーへ。
Hostname: mamba.gps.caltech.edu
Port: 2101
これで繋がります
string message = "GET / HTTP/1.0\r\nUser-Agent: NTRIP client\r\nAccept: */*\r\nConnection: close\r\n\r\n"
IPAddress ipAddress = Dns.GetHostEntry(hostname).AddressList[0];
_NTRIPCaster = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_NTRIPCaster.Connect(new IPEndPoint(ipAddress, Convert.ToInt32(port)));
_NTRIPCaster.Send(Encoding.ASCII.GetBytes(message));
for (int i = 0; i < 50; i++) //Wait for upto 5 seconds for a response
{
Thread.Sleep(100);
if (_NTRIPCaster.Available > 0)
{
Byte[] inBytes = new byte[_NTRIPCaster.Available];
_NTRIPCaster.Receive(inBytes);
sourceTable += Encoding.ASCII.GetString(inBytes, 0, inBytes.Length);
//Check if all of the Source table has been recieved
if (sourceTable.Contains("ENDSOURCETABLE"))
{
sourceTableRecieved = true;
break;
}
}
}
Wi-Fi接続がある場合、またはデバイスがPCにドッキングされていて、Active SyncがPCのインターネット接続を共有している場合、これはすべて正常に機能します。
PCでインターネットを切断し、Wi-Fiを無効にすると、ホスト名をIPアドレスに解決できなくなります。ソケット接続にも到達しません。基本的に、デバイスでモデムを使用しておらず、GPRS接続を使用していません。これは、GPRSが接続されているかどうかに関係なく発生します。
私はWM6を使用しているので、接続マネージャーAPI(http://msdn.microsoft.com/en-us/library/aa458120 )を確認しました。
しかし、他のいくつかの投稿をフォローした後、stackoverflowや他のフォーラムで見つけることができましたが、それを機能させることができませんでした。GPRS接続を確立してサーバーへのデータ送信を開始する方法を知っている人はいますか?