WM6의 NTRIP 클라이언트에서 쓰고 있습니다. 기본적으로 구성을 보내 소켓을 사용하여 서버에서 데이터를 가져옵니다. 하지만 같은 장치에서 GPRS 연결을 통해 작동시키지 못합니다.WM6 GPRS를 사용하는 소켓
이 메시지를 보내드립니다.
Get/HTTP/1.0
User-Agent: NTRIP client
Accept: */*
Connection: close
이 서버에. 나는 Wi-Fi 연결이있는 경우
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;
}
}
}
이 모두 잘 작동을 수행하여 연결을 만들거나 장치가 PC에 인터넷을 공유하는 PC와 액티브 싱크에 도킹 연결.
PC에서 인터넷을 끊고 Wi-Fi를 사용하지 않으면 호스트 이름을 IP 주소로 확인할 수 없습니다. 소켓 연결도하지 않습니다. 기본적으로 장치에서 모뎀을 사용하지 않고 GPRS 연결을 사용합니다. 이것은 GPRS 연결 여부와 관계없이 발생합니다.
저는 WM6이므로 연결 관리자 API - http://msdn.microsoft.com/en-us/library/aa458120을 살펴 봤습니다.
그러나 몇 가지 다른 게시물을 따라 stackoverflow 및 다른 포럼에서 찾을 수있었습니다. 작동하지 못하게되었습니다. 누구든지 GPRS 연결을 만들고 서버에 데이터를 보내는 방법을 알고 있습니다.
나는 HttpRequest가 이것을 관리한다고 들었습니다. NTRIP에서 찾을 수있는 모든 예가 소켓 연결을 사용 했으므로 HttpRequest를 사용하여 액세스하려고 시도한 적이 없습니다. NTRIP에는 자체 프로토콜이 있습니다. 나 또는 서버가 연결을 끊을 때까지 서버에서 데이터를 스트리밍 할 때 서버에 대한 지속적인 연결을 유지해야합니다. 솔직히 말하면 소켓을 사용해야하는 것은 이번이 처음이라고합니다. – JonWillis
NTRIP 프로토콜에 익숙하지 않지만 코드 샘플이 HTTP와 비슷합니다. NTRIP가 HTTP를 피기 백하면 HttpReqest 객체를 계속 사용할 수 있습니다. 그냥 생각 ... – tcarvin
어쨌든, 그물에 샘플 무리가 있습니다. 다음은 충분히 간단하게 보이는 것입니다 : [link] (http://blogs.msdn.com/b/anthonywong/archive/2006/03/13/550686.aspx) – tcarvin