Tyrus:静默服务器启动失败
Posted
技术标签:
【中文标题】Tyrus:静默服务器启动失败【英文标题】:Tyrus: silent server start failure 【发布时间】:2016-05-06 09:26:12 【问题描述】:我们目前正在尝试使用Tyrus 实现 WebSocket 服务器,并且一切正常(服务器-客户端通信正常),直到我们尝试测试如果服务器初始化失败(例如端口错误)会发生什么。
底层代码抛出 SocketException(权限被拒绝)。异常被写入标准输出,但服务器继续,程序继续超出 start() 方法。
public void runServer()
// bad port number
Server server = new Server("localhost", 10, "/websockets", null, EchoEndpoint.class);
try
server.start();
// this line should not be printed
System.out.println("Server started");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please press a key to stop the server.");
reader.readLine();
catch (Exception e)
System.out.println("Exception caught");
e.printStackTrace();
finally
server.stop();
有没有办法检测服务器是否启动成功?
编辑:我们知道我们不能使用端口 10(这就是我们尝试它的原因)。我们只需要检查服务器是否正在运行(通过某种方式捕获异常)。 (而且我们不想通过尝试向客户端发送一些虚拟数据来测试它——这并不能真正解决问题)
【问题讨论】:
【参考方案1】:您的端口号“10”太低,普通用户无法使用。您必须是特权用户或使用大于 1024 的端口号:
Server server = new Server("localhost", 1025, "/websockets", null, EchoEndpoint.class)
【讨论】:
谢谢你的回答,但我知道这个端口不能用。这就是服务器不启动的原因(这是“模拟”启动失败的最简单方法)。我的问题是如何检测服务器没有启动。以上是关于Tyrus:静默服务器启动失败的主要内容,如果未能解决你的问题,请参考以下文章
iOS 仪器,无法在 iPad 上启动任何应用程序。 Instruments 静默失败