我正在尝试编写一些使用UPnP进行NAT遍历的代码(仅供家庭使用),使用C#4和Microsoft的基于COM的NAT遍历API(Hnetcfg.dll).
不幸的是(或者幸运的是)我最后一次在.NET中使用COM互操作是在最后一个冰河时代的某个时候,我似乎对C#使用动态类型进行互操作以及如何编写回调感到困惑(所以COM服务器调用我的托管代码).
这是令人兴奋的几行代码:
// Referencing COM NATUPNPLib ("NATUPnP 1.0 Type Library")
using System;
using NATUPNPLib;
class NATUPnPExample
{
public delegate void NewNumberOfEntriesDelegate(int lNewNumberOfEntries);
public static void NewNumberOfEntries(int lNewNumberOfEntries)
{
Console.WriteLine("New number of entries: {0}", lNewNumberOfEntries);
}
public static void Main(string[] args)
{
UPnPNAT nat = new UPnPNAT();
NewNumberOfEntriesDelegate numberOfEntriesCallback = NewNumberOfEntries;
nat.NATEventManager.NumberOfEntriesCallback = numberOfEntriesCallback;
nat.StaticPortMappingCollection.Add(4555, "TCP", 4555, "192.168.0.1", true, "UPnPNAT Test");
// Presumably my NewNumberOfEntries() method should be called by the COM component about now
nat.StaticPortMappingCollection.Remove(4555, "TCP");
} …Run Code Online (Sandbox Code Playgroud) 我一直在浏览.NET 4中所有新的EF和WCF,用于早期的一个重大项目,我认为我的大脑现在正式变成了污泥.这是自1.1天以来我在.NET中进行的第一次大规模开发工作.像往常一样,一切都需要在昨天完成,所以我正在追赶.
这就是我需要共同努力的结果 - 任何理智检查或指导将不胜感激.该项目本身可以被认为是一个豪华的电子商务系统,有多个客户端,包括基于Web和基于Windows,通过实时数据连接到中央服务器.
在服务器端:
在客户端:
一般要求:
对不起,这是如此开放,但正如我所说,我的大脑完全变成了污泥,我把自己弄糊涂到了我冻结的地步.
有人能指出我如何构建类来完成所有这些的大方向吗?老实说,非常非常感谢.