套接字构造函数缺失

时间:2014-08-14 11:57:00

标签: sockets f# mono overloading constructor-overloading

这个程序:

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

在mono上发生此错误消息失败:

  

错误FS0505:成员或对象构造函数'Socket'不带2个参数。发现一个超载被认为是一个论点。

TryF#上的此错误消息:

  

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

文档says otherwise

我做错了什么?

1 个答案:

答案 0 :(得分:1)

此代码在Visual Studio中适用于我。在Try F#中,代码是针对Silverlight版本的.NET框架运行的,它没有完整.NET中可用的所有重载,因此缺少重载2个参数。

如果您滚动到&#34;版本信息&#34>,您可以看到这一点。两个MSDN页面上的部分:

我想你应该可以使用:

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

虽然我怀疑Silverlight可能出于安全原因对套接字有其他限制,所以如果你想在F#中建立网络,那么获得桌面版本可能会更好。