现在需要在 client 和 server 间做心跳检测,常见的方法是 server 提供一个方法, client 每隔一定时间去 call 一下,看返回状态,如果正常返回则说明成功。
但是,假设我现在不能在 server 提供这个方法,我只能用 socket 去检测 server 是否还活着, 那么现在我用的是每次创建一个 socket ,然后发送 socket.sendUrgentData(0xff); 没报错我就认为 server 活着。
我想问一下, 1 、如果每次都创建一个新的 socket ,性能有多大消耗?会不会每次都占用 server 的连接数活着端口? 2 、大家一般这种情况下的心跳是怎么做的? 3 、如果维持一个长连接的 socket ,即设置 keepliave 为 true ,但是会报错 Broken pipe at java.net.PlainSocketImpl.socketSendUrgentData