我在为我用Xna制作的一个非常简单的游戏创建网络界面时遇到了问题。我只需要通过TCP客户端/套接字发送对象。我有一个叫“Player”的类。在每个播放器中,都有一个字段名为“Info”,类型为“PlayerInfo”。在客户端/服务器端,我需要将每个玩家的信息发送给除了发送它的那个客户端之外的每个客户端(显然)。这是一个简单的例子,但我需要用大约5- 10个对象,加上发送球员更新(位置,动作…)有没有使用TCP / Sock实现这一点的简单方法?注意:我认为我在C#和编程方面的知识得分为6/10,所以如果你有一个解决方案,你不需要解释所有的东西(例如:变量和字段有什么区别)。我还了解接口、库和…等提前感谢!
发布于 2013-02-22 06:38:58
我个人的快速清理解决方案,使用JSON.NET:
class JMessage
{
public Type Type { get; set; }
public JToken Value { get; set; }
public static JMessage FromValue<T>(T value)
{
return new JMessage { Type = typeof(T), Value = JToken.FromObject(value) };
}
public static string Serialize(JMessage message)
{
return JToken.FromObject(message).ToString();
}
public static JMessage Deserialize(string data)
{
return JToken.Parse(data).ToObject<JMessage>();
}
}现在你可以像这样序列化你的对象:
Player player = ...;
Enemy enemy = ...;
string data1 = JMessage.Serialize(JMessage.FromValue(player));
string data2 = JMessage.Serialize(JMessage.FromValue(enemy));通过线路发送数据,然后在另一端,您可以执行以下操作:
string data = ...;
JMessage message = JMessage.Deserialize(data);
if (message.Type == typeof(Player))
{
Player player = message.Value.ToObject<Player>();
}
else if (message.Type == typeof(Enemy))
{
Enemy enemy = message.Value.ToObject<Enemy>();
}
//etc...https://stackoverflow.com/questions/15012549
复制相似问题