将套接字传递给新的 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的主要内容,如果未能解决你的问题,请参考以下文章
如何将 DataTable.Select() 结果传递给新的 DataTable?
如何将特定的 ListTile 变量传递给新的页面路由 onTap?