这个程序:
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>
我做错了什么?
答案 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#中建立网络,那么获得桌面版本可能会更好。