Пишу в клиенте NTRIP на WM6. Обычно я получаю данные с сервера, используя сокеты, сначала отправляя конфигурацию. Но я не могу заставить его работать через соединение 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 или устройство подключено к ПК, а активная синхронизация использует подключение к Интернету ПК.
Если я отключу Интернет на ПК и отключу Wi-Fi, он не сможет преобразовать имя хоста в IP-адрес. Не доходит даже до разъемов подключения. В основном это не использование модема в устройстве и использование соединения GPRS. Это происходит независимо от того, подключен GPRS или нет.
Поскольку я использую WM6, я посмотрел на API диспетчера соединений - http://msdn.microsoft.com/en-us/library/aa458120.
Но после нескольких других сообщений, которые мне удалось найти в stackoverflow и других форумах, я не смог заставить его работать. Кто-нибудь знает, как я могу установить соединение GPRS и начать отправку данных на сервер.