异常:java.net.SocketException: Method sendUrgentData() is not supported
程序员文章站
2024-01-10 14:24:22
...
Runnable keepBeatingRunnable=new Runnable() {
@Override
public void run() {
while (isConnected){
System.out.println("心跳开始");
try{
Thread.sleep(10000);
System.out.println("心跳开始2");
sslSocket.sendUrgentData(0xFF);
System.out.println("发送心跳包");
}catch (Exception e){
isConnected=false;
System.out.println("心跳开始3");
e.printStackTrace();
//sendJsonMsg(MessageTool.mkOfflienJSMsg(userID,getMID()));
}
System.out.println("心跳开始4");
}
}
};
输出异常:
查了一下API:
SslSocket从Socket继承了这个方法,然而并不能实现。
我的解决方法是依赖keepalive方法,但是这个时间间隔又特别长。
查了一下似乎找不到可以有效更改这个时间的方法,至少在SSLSocket住上是不行的,大部分都是Method is not support。
最后我自己写了个心跳线程,很是蛋疼。这个问题先Mark,以后解决了再来处理。
public void run(){
while (!ConnectionOver){
try{
//System.out.println("BEATING Start");
sendBeat();
Thread.sleep(1000*60);
}catch (Exception e){
ConnectionOver=true;
e.printStackTrace();
}
}
//System.out.println("BEATING over");
}
上一篇: MySQL十个常见错误
下一篇: js类型判断的几种方法