除了在该端口上启动服务器之外,Dart 是否可以“锁定”一个端口。换句话说,我猜,端口充当信号量。或者是否有另一种方法可以达到相同的结果?
我发布了一个问题,询问该问题的解决方案,Fox32 建议在特定端口上启动服务器,并以这种方式确定程序的另一个实例是否已经在运行。我需要确定第一个实例以开始实际处理,而不是实际是否只是在运行,并且该解决方案有效。
虽然该解决方案运作良好,但在我看来,应该有一个更量身定制的解决方案。示例代码如下:
/*
* Attempt to connect to specific port to determine if first process.
*/
async.Future<bool> fTestIfFirstInstance() {
async.Completer<bool> oCompleter = new async.Completer<bool>();
const String S_HOST = "127.0.0.1"; // ie: localhost
const int I_PORT = 8087;
HttpServer.bind(S_HOST, I_PORT).then((oHtServer) {
ogHtServer = oHtServer; // copy to global
oCompleter.complete(true); // this is the first process
return;
}).catchError((oError) {
oCompleter.complete(false); // this is NOT the first process
return;
});
return oCompleter.future;
}