【发布时间】:2015-02-26 14:34:23
【问题描述】:
我在服务器上使用 Dart 1.8.5。 我想实现 TCP Socket Server,它监听传入的连接,向每个客户端发送一些数据,并在客户端断开连接时停止生成数据。
这里是示例代码
void main() {
ServerSocket.bind(
InternetAddress.ANY_IP_V4,
9000).then((ServerSocket server) {
runZoned(() {
server.listen(handleClient);
}, onError: (e) {
print('Server error: $e');
});
});
}
void handleClient(Socket client) {
client.done.then((_) {
print('Stop sending');
});
print('Send data');
}
此代码接受连接并打印“发送数据”。但即使客户端不在,它也永远不会打印“停止发送”。
问题是:如何在监听器中捕获客户端断开连接?
【问题讨论】:
-
对我来说这看起来像一个错误。请在dartbug.com 创建问题
-
您可以在我的回答中看到示例。它显示
Stop sending,并详细解释了在 Dart SDK 中发现的问题。