我正在尝试使用 XNA 和 Lidgren 网络库创建一个在线游戏。但是,现在我无法发送和接收任何消息而没有收到错误消息:“尝试读取缓冲区大小 - 可能是由于写入/读取不匹配、大小或顺序不同造成的。”
我像这样将消息发送给客户端:
if (btnStart.isClicked && p1Ready == "Ready")
{
btnStart.isClicked = false;
NetOutgoingMessage om = server.CreateMessage();
CurrentGameState = GameState.City;
om.Write((byte)PacketTypes.Start);
server.SendMessage(om, server.Connections, NetDeliveryMethod.Unreliable, 0);
numPlayers = 2;
Console.WriteLine("Game started.");
}
其中 PacketTypes.Start 是设置为区分不同消息的枚举的一部分。
客户端收到此消息,如下所示:
if (joining)
{
NetIncomingMessage incMsg;
while ((incMsg = client.ReadMessage()) != null)
{
switch (incMsg.MessageType)
{
case NetIncomingMessageType.Data:
if (incMsg.ReadByte() == (byte)PacketTypes.Ready)
{
p1Ready = "Ready";
}
else if (incMsg.ReadByte() == (byte)PacketTypes.Start)
{
CurrentGameState = GameState.City;
Console.WriteLine("Game started");
numPlayers = 2;
}
break;
default:
Console.WriteLine("Server not found, Retrying...");
break;
}
}
}
但是无论我尝试了什么,我仍然会收到该错误。请,任何帮助将不胜感激。