我正在使用旅客信息系统PIS(火车)。因此,火车使用端口8080上的套接字将其位置发送到我的服务器PIS。因此,我应该获取其位置并将其显示给乘客。来自火车的消息有一个模板,我应该遵循该模板。如您在这里看到的:
因此,如您所见,这里有6个变量。每个整数都是4个字节。第一个变量是(4字节)消息源等。
在我的服务器中,我必须检测到这些变量,但是我不知道如何从消息中检测到它们。
static void Listeners()
{
Socket socketForClient = tcpListener.AcceptSocket();
if (socketForClient.Connected)
{
Console.WriteLine("Client:" + socketForClient.RemoteEndPoint + " now connected to server.");
NetworkStream networkStream = new NetworkStream(socketForClient);
System.IO.StreamWriter streamWriter =
new System.IO.StreamWriter(networkStream);
System.IO.StreamReader streamReader =
new System.IO.StreamReader(networkStream);
while (true)
{
TimeTableRepository objTimeTableRepository = new TimeTableRepository();
SensorRepository objSensorRepository = new SensorRepository();
ArrivalTimeRepository objArrivalTimeRepository=new ArrivalTimeRepository();
TrainRepository objTrainRepository = new TrainRepository();
// OnlineTrainRepository ObjOnlineTrainrepository = new OnlineTrainRepository();
//-----
string theString = streamReader.ReadLine();
}
}
}
这是我对8080端口的监听器,theString是火车发送的消息。我的问题是如何从theString中检测此参数(消息源,消息目标等)?我的意思是我需要它们的值存储在数据库。
最好的祝福
看起来您不需要检测任何内容,并且绝对不应将其拍成字符串尝试解析。
您已经知道您将获得一堆整数。您甚至都知道它们的顺序。使用BinaryReader可以获取您的电话号码,然后从那里开始。一旦加载了阅读器,它应该像调用BinaryReader.ReadInt32()
一个接一个的读取消息的号码一样简单。
我还必须强烈建议您调查using
流的语句。
using (var reader = new BinaryReader(networkStream))
{
var messageSource = reader.ReadInt32();
var messageDestination = reader.ReadInt32();
... and so on ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句