bindSecure()与InternetAddress.ANY_IP_V4作为动态地址参数

时间:2014-08-26 09:57:57

标签: dart

我和these examples玩了一会儿。我使用平板电脑从服务器获得适当的响应:

HttpServer.bind(InternetAddress.ANY_IP_V4, 4040)

然后我想尝试安全套接字示例。对于localhost,它正在工作。

HttpServer.bindSecure('localhost', 4047...

但是它不会响应来自其他计算机的请求。所以我尝试了这个:

HttpServer.bindSecure(InternetAddress.ANY_IP_V4, 4047,

得到编译错误:

Breaking on exception: object of type TypeError
Unhandled exception:
type '_InternetAddress' is not a subtype of type 'String' of 'address'.
#0      RawSecureServerSocket.bind (secure_server_socket.dart:182)
#1      SecureServerSocket.bind (secure_server_socket.dart:70)
#2      _HttpServer.bindSecure (http_impl.dart:2025)
#3      HttpServer.bindSecure (http.dart:179)
#4      main (file:///D:/Documents/dart/dart-tutorials-samples-master/httpserver/bin/hello_world_server_secure.dart:16:24)
#5      _startIsolate.isolateStartHandler (dart:isolate-patch/isolate_patch.dart:216)
#6      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:115)

我尝试打印'InternetAddress.ANY_IP_V4'并获得'0.0.0.0'。所以我试过了:

HttpServer.bindSecure('0.0.0.0', 4047,

它有效。

为什么'InternetAddress.ANY_IP_V4'作为bindSecure的第一个参数失败?我不明白错误信息。

1 个答案:

答案 0 :(得分:1)

编辑:查看评论,这是旧版Dart VM中的错误/不一致!

这看起来像个错误。根据{{​​3}},bindSecure应该采用StringInternetAddressInternetAddress.ANY_IP_V4甚至可以作为样本提供!

  

地址可以是StringInternetAddress。如果地址   是String,bind将执行查找并使用中的第一个值   名单。监听环回适配器,这只允许   来自本地主机的传入连接,使用该值   [InternetAddress.LOOPBACK_IP_V4]或[InternetAddress.LOOPBACK_IP_V6]。   要允许来自网络的传入连接,请使用以下任何一个   值[InternetAddress.ANY_IP_V4]或[InternetAddress.ANY_IP_V6]   绑定到所有接口或特定接口的IP地址。

我已经了解了这些文件的来源;但无法弄清楚这是什么错误;乍一看代码看起来很好:(