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



我稍微摆弄了一下这些例子。我使用

从平板电脑的服务器获得正确的响应
HttpServer.bind(InternetAddress.ANY_IP_V4, 4040)

然后我想尝试安全套接字的例子。对于本地主机,它正在工作一个预期的。

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失败的第一个参数?我不明白错误信息

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

这看起来像一个bug。根据文档bindSecure应该采取StringInternetAddress, InternetAddress.ANY_IP_V4甚至给出了一个样本!

地址可以是StringInternetAddress。如果地址是String, bind将执行查找并使用列表。在环回适配器上监听,这将只允许来自本地主机的传入连接,使用该值[InternetAddress.LOOPBACK_IP_V4]或[InternetAddress.LOOPBACK_IP_V6]。要允许来自网络的传入连接,请使用[InternetAddress.ANY_IP_V4]或[InternetAddress.ANY_IP_V6]绑定所有接口或指定接口的IP地址。

我已经浏览了这些文件的源代码;但不知道是什么虫子;代码第一眼看起来不错:(

最新更新