我正在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,并且 Activity 同步正在共享PC的Internet连接,则所有这些都可以正常工作。
如果我切断了PC上的Internet并禁用了Wi-Fi,则其无法将主机名解析为IP地址。甚至都没有进入套接字连接。基本上,它不使用设备中的调制解调器,而是使用GPRS连接。无论是否连接GPRS,都会发生这种情况。
由于我使用的是WM6,因此我研究了连接管理器API-http://msdn.microsoft.com/en-us/library/aa458120。
但是在关注了其他几篇文章之后,我已经能够在stackoverflow和其他论坛上找到我无法使它工作的功能。有谁知道我如何建立GPRS连接并开始向服务器发送数据。
最佳答案
如果使用更高级别的网络对象(例如HttpRequest),则.NET Framework将自动调用连接管理器API。您使用低级套接字是有原因的吗?
关于c# - 使用GPRS的WM6 socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110816/