我有很多GPS设备。我的一个设备(作为客户端)每隔几分钟就在TCP" [3G * 4700201934 * 0009 * LK,0,1,61]"
上发送此消息我的服务器必须从GPS设备读取消息并回复设备,我的意思是我的服务器必须发送此消息" [3G * 4700201934 * 0009 * LK]"获得GPS位置。如果我无法发送此消息,则GPS设备不会发送GPS的位置。
我的代码:
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
//Sonsuz döngü sayesinde AgAkimini sürekli okuyoruz
while (true)
{
Socket client = listener.AcceptSocket();
Console.WriteLine("Connection accepted.");
var childSocketThread = new Thread(() =>
{
byte[] data = new byte[100];
int size = client.Receive(data);
string fromGPSMessage = string.Empty;
for (int i = 0; i < size; i++)
fromGPSMessage += Convert.ToChar(data[i]);
Console.WriteLine("Recieved data: " + fromGPSMessage);
//fromGPSMessage = [3G*4700201934*0009*LK,0,1,59]
string serverMessageToGPS = fromGPSMessage.Substring(0, fromGPSMessage.IndexOf(",")) + "]";
//serverMessageToGPS = [3G*4700201934*0009*LK]
Encoding ascii = Encoding.ASCII;
client.Send(ascii.GetBytes(serverMessageToGPS));
data = new byte[100];
size = client.Receive(data);
string newMessagefromGPSMessage = string.Empty;
for (int i = 0; i < size; i++)
newMessagefromGPSMessage += Convert.ToChar(data[i]);
Console.WriteLine("New Message Data: " + newMessagefromGPSMessage);
client.Close();
});
childSocketThread.Start();
}
有时候没有新的消息数据:
我可以向设备发送消息,但我不知道如何从GPS设备获取第二条消息。
答案 0 :(得分:0)
听起来您需要阅读TcpClient
:MSDN documentation
该页面上的示例显示了如何发送数据,以及如何读取返回给您的数据。
答案 1 :(得分:0)
您应该创建TCP OnReceive事件。因此,当新数据出现时,执行OnReceive事件并且您可以解析数据。
在您的代码中,您编写了client.Receive(数据),因此它将单次接收数据。要接收所有数据,您必须实现OnReceive事件,或者您可以使用线程将client.Receive(data)方法放入循环中。