Пишу на 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 и начать отправку данных на сервер.