0

这个程序:

open System.Net.Sockets    
let s = new Socket(SocketType.Stream, ProtocolType.Tcp)

在单声道上失败并显示此错误消息:

错误 FS0505:成员或对象构造函数 'Socket' 不采用 2 个参数。发现有 1 个参数的重载。

TryF#上的此错误消息:

错误 FS0501:成员或对象构造函数 'Socket' 采用 3 个参数,但这里给出了 2。所需的签名是 'Socket(addressFamily:AddressFamily,socketType:SocketType,protocolType:ProtocolType):unit'。

文档另有说明

我究竟做错了什么?

4

1 回答 1

1

这段代码在 Visual Studio 中对我来说很好用。在 Try F# 中,代码针对 .NET 框架的 Silverlight 版本运行,该版本没有完整 .NET 中可用的所有重载,因此缺少带 2 个参数的重载。

如果您滚动到两个 MSDN 页面上的“版本信息”部分,您可以看到这一点:

我想你应该能够使用:

let s = new Socket(AddressFamily.Unspecified, SocketType.Stream, ProtocolType.Tcp)

虽然我怀疑 Silverlight 可能出于安全原因对套接字有其他限制,但如果你想在 F# 中进行网络连接,最好获得桌面版本。

于 2014-08-14T12:19:23.887 回答