我正在使用Lidgren网络库来创建实时多人游戏。
我要做的是,将所有传入的包(包括所有字节)保存到二进制文件中的对等体。后来当我需要调试一些奇怪的网络行为时,我可以加载这个文件并让它按顺序加载所有(或重建)它保存的包。通过这种方式,我可以找到奇怪的行为是如何发生的。
我的问题是,当我从文件中加载它时,如何重新创建此包?
我认为这是一个我需要重新创建的NetIncomingMessage,到目前为止,我想到要么重新创建它,要么将NetOutgoingMessage发送给自己,所以如果第一种方法,它希望具有我想要实现的相同效果失败。
答案 0 :(得分:0)
我解决这个问题的方法是创建一个NetIncomingMessage的接口(包装器对象),它包含一个数据字节数组和其他数据成员,并且有一个线程根据保存的传入时间填充这些对象的列表,从另一个线程请求和删除(出列)。 见https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem