【问题标题】:C# wrapper for Winsock 2 DLL?Winsock 2 DLL 的 C# 包装器?
【发布时间】:2011-10-07 19:01:53
【问题描述】:

现在 Silverlight 5 (RC) 支持P/Invoke,我正在考虑实现一个具有服务器功能的 Socket 类,即实现 Bind、Listen、Accept 方法等的类。使用 P/Invoke,我会能够从我的 Silverlight 类库访问 ws2_32.dll 中的套接字方法。

如果可能的话,我想抢先一步。这是一个远景,但是:是否有人为 Winsock 2 DLL 实现了 C# 包装器,在这种情况下,这项工作是否公开可用?

Mono 项目当然在 C# 中提供了自己的 Socket 实现,但至少可以说这段代码有一点开销。如果有的话,我正在寻找更轻量级的解决方案。

【问题讨论】:

  • 我可能遗漏了一些东西,但是有什么理由不使用内置的 System.Net.Sockets 类吗? msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
  • 在 Silverlight 中,内置的 Socket 类不支持 Bind、Listen 和 Accept 等服务器方法。使用 Silverlight 中的 P/Invoke,我将能够实现支持这些方法的自定义 Socket 类。
  • Silverlight 未在受支持的平台上列出(链接中的页面末尾)
  • 我遗漏了一些东西。谢谢!
  • 所以,你想在我的浏览器中打开一个监听套接字。感谢病毒扫描程序/浏览器安全,他们不允许这样做。

标签: c# silverlight sockets pinvoke winsock2


【解决方案1】:

不确定这是否是您要查找的内容,但在http://www.pinvoke.net/default.aspx/ws2_32.bind# 上您可以找到您要查找的签名,只需在网站左侧查找ws2_32

编辑 - 在 cmets 之后:

这个http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4043&lngWId=10 似乎是一个 VB 实现的 Winsock2 包装器,可供 C# 使用。

【讨论】:

  • 谢谢,Yahia。是的,我知道 pinvoke.net。对于 ws2_32 它是相当不完整的。我希望有人已经完成了包装更多 ws2_32 方法的工作。
  • 再次感谢,Yahia。在写信给 SO 之前,我也看到了那个。我查看了代码,但乍一看,我是否可以使用它并不明显。我会再看一遍,看看我第一次是否忽略了某些东西。无论哪种方式,我都非常感谢您为此付出的努力。
  • 我现在更仔细地查看了 VB-socket 包装器,它似乎依赖于一个 ActiveX 组件 mswinsck.osx。这似乎不是一个理想的解决方案,所以我将在 ws2_32.dll 中手动声明相关方法的 P/Invoke。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多