我在 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 并且主动同步正在共享 PC 的互联网连接,这一切都可以正常工作。
如果我切断 PC 上的互联网并禁用 Wi-Fi,则无法将主机名解析为 IP 地址。甚至没有到达套接字连接。基本上它不使用设备中的调制解调器并使用 GPRS 连接。无论 GPRS 是否连接,都会发生这种情况。
由于我在 WM6 上,因此我查看了连接管理器 API - http://msdn.microsoft.com/en-us/library/aa458120。
但是在关注了其他一些帖子之后,我已经能够在 stackoverflow 和其他论坛上找到它,但我无法让它工作。有谁知道我如何建立 GPRS 连接并开始向服务器发送数据。