我正在编写服务器代码,并且我已经与所有客户端建立了TCP连接。 现在,当客户端发送数据包时,我会检查数据包的操作码,以便我可以处理它。
目前,我有一个当前包含String name
的OpcodeHandler结构,但我也希望它有一个C ++类型的函数指针调用另一个函数,这样当我创建一个结构为类型的数组时我像这样初始化数组:
opcodes = new OpcodeHandler[max_opcodes]
{
new OpcodeHandler("someopcodenamehere", Somefunctionname);
// more new's..
}
在构造函数的第二个参数中命名的函数:调用函数指针时调用'Somefunctionname'。 我听说代理可以这样做,因为它们的行为就像C ++中的函数指针一样,但我的所有尝试都没用。
答案 0 :(得分:1)
你说你有一个结构OpcodeHandler
,你想要创建一个数组。
现在我不知道OpcodeHandler
还有什么,但我会建议更简单的事情:
Dictionary<string, Action<PacketData>> OpcodeHandlers = new Dictionary<string, Action<PacketData>>();
这是代表词典。
您可以像这样添加功能:
OpcodeHandlers["someopcodenamehere"] = Somefunctionname;
并调用这样的函数:
OpcodeHandlers["someopcodenamehere"](packetData);
修改强>
您也可以像这样填写词典:
Dictionary<string, Action<PacketData>> OpcodeHandlers = new Dictionary<string, Action<PacketData>>
{
{ "functionName1", function1 },
{ "functionName2", function2 }
};
答案 1 :(得分:1)
new OpcodeHandler("someopcodenamehere", packetData =>
Somefunctionname(packetData))