C# 读取服务器使用套接字发送的消息的变量
我正在使用乘客信息系统PIS(火车)。因此,火车使用端口8080上的套接字将其位置发送到我的服务器PIS。因此,我应该获取其位置并向乘客显示。来自火车的信息有一个模板,我应该遵循这个模板。正如你在这里看到的: 如您所见,这里有6个变量。每个整数是4字节。第一个变量是(4字节)消息源等 在我的服务器中,我必须检测这些变量,但我不知道如何从消息中检测它们C# 读取服务器使用套接字发送的消息的变量,c#,sockets,listener,port,C#,Sockets,Listener,Port,我正在使用乘客信息系统PIS(火车)。因此,火车使用端口8080上的套接字将其位置发送到我的服务器PIS。因此,我应该获取其位置并向乘客显示。来自火车的信息有一个模板,我应该遵循这个模板。正如你在这里看到的: 如您所见,这里有6个变量。每个整数是4字节。第一个变量是(4字节)消息源等 在我的服务器中,我必须检测这些变量,但我不知道如何从消息中检测它们 static void Listeners() { Socket socketForClient =
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端口,字符串是通过火车发送的消息。我的问题是如何从字符串中检测这些参数(消息源、消息目的地等)?我的意思是我需要将它们的值存储在数据库中
“致以最诚挚的问候”看起来您不需要检测任何东西,而且肯定不应该将其插入字符串中以尝试解析 你已经知道你得到了一堆整数。你甚至知道他们的顺序。使用a来获取您的号码,然后从那里开始。一旦加载了阅读器,就应该像调用
BinaryReader.ReadInt32()
一个接一个地读取消息的数字一样简单
我还必须强烈建议您为您的流使用语句
using (var reader = new BinaryReader(networkStream))
{
var messageSource = reader.ReadInt32();
var messageDestination = reader.ReadInt32();
... and so on ...
}
@完成了。还有一个关于我提供给MSDN文档的链接的例子。只有一个问题,我的整数长度是静态的。我应该使用这个:pos+=sizeof(int)@EA编号。BinaryReader
应该已经为您处理了。每次调用ReadInt32()
时,它都会自动将其移动4个字节,因为这是32位整数的大小。除非需要跳过x
字节数,否则不必手动移动。我在读取二进制数据时遇到问题,如果可能,请查看: