将套接字传递给新的 AppDomain

Posted

技术标签:

【中文标题】将套接字传递给新的 AppDomain【英文标题】:Passing a socket to a new AppDomain 【发布时间】:2011-08-15 15:42:18 【问题描述】:

我正在将客户端/服务器应用程序移植到 .NET。服务器的当前 C 版本有一个用于侦听套接字连接的进程(Windows 服务)的可执行文件。当侦听器接受套接字连接时,它会生成一个新进程来处理该连接。处理程序应用程序是一个单独的可执行文件。

在此应用程序的 .NET 版本中,我想要一个可执行文件/进程。侦听器应该为每个连接创建一个新的 AppDomain(以隔离分配给每个客户端的“工作进程”)。我应该如何将套接字从侦听器应用程序域传递到工作应用程序域?

谢谢!

【问题讨论】:

根据隔离,您可能能够在各自的域上使用 GetData 和 SetData,但您可能必须跨域编组对象。你有没有尝试过? 我想我刚刚找到了自己问题的答案。即使我没有将套接字传递给单独的进程,也可以使用 DuplicateAndClose 方法。侦听器可以只传入它自己的进程 ID。 link 酷,希望它能正常工作;如果是,那么您应该回答您自己的问题并接受它。 【参考方案1】:

我想我刚刚找到了自己问题的答案。即使我没有将套接字传递给单独的进程,也可以使用 DuplicateAndClose 方法。侦听器只需将自己的进程 ID 传递给 DuplicateAndClose。

这里描述了解决方案: http://blogs.msdn.com/b/malarch/archive/2005/12/14/503884.aspx

如果您想将套接字传递给单独的进程,这也适用。

【讨论】:

以上是关于将套接字传递给新的 AppDomain的主要内容,如果未能解决你的问题,请参考以下文章

将蓝牙连接传递给新的 Activity

如何将 DataTable.Select() 结果传递给新的 DataTable?

如何将特定的 ListTile 变量传递给新的页面路由 onTap?

将 log4net 配置文件传递给新的 AppDomain

如何在 Swift 3.0 中将 TableViewCell 值传递给新的 ViewController?

odoo 由动作传递默认值给新的模型