关闭

异常:java.net.SocketException: Method sendUrgentData() is not supported

标签: 异常sslsocketsendUrgentDataSocketException
331人阅读 评论(0) 收藏 举报
分类:
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");
	}



1
0
查看评论

socket.sendUrgentData判断网络远端是否断开连接

如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。 首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法...
  • cluzax
  • cluzax
  • 2014-10-30 16:09
  • 648

如何用socket.sendUrgentData()发送紧急数据(一般用不到,了解)

TCP的紧急指针,一般都不建议使用,而且不同的TCP/IP实现,也不同,一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据,让对方紧急处理。但是,虽然sendUrgentData的参数data是int类型,但只有这个int类型的低字节被发送,其它的三个字节被忽略。下面的代码演示了如何使...
  • qq_23167527
  • qq_23167527
  • 2017-01-10 17:40
  • 2378

OOBInline属性为false,server接收了client通过sendUrgentData 发送的紧急数据包

 前几天前置上线遇到一问题,大体情况是这样有一个加密服务,对外暴露tcp通讯接口,client端建立连接池,启N个连接(长连接),每次报文通讯之前先通过client端的sendUrgentData(0XFF)方法发送心跳包,用以检测信路是否正常.然后计算待发送报文的长度,将其转换成byte拼在...
  • lingjun_yang
  • lingjun_yang
  • 2014-11-04 10:51
  • 1860

比isConnected()更靠谱的的获取socket实时连接状态!

估计很多人会说用socket.isConnected()或者socket.isClosed()等方法来判断就行了,但事实上这些方法都是访问socket在内存驻留的状态,当socket和服务器端建立链接后,即使socket链接断掉了,调用上面的方法返回的仍然是链接时的状态,而不是socket的实时链接...
  • android_drawing
  • android_drawing
  • 2015-07-21 15:16
  • 2941

Java,在Windows平台上使用Socket.sendUrgentData() 来检查连接有效性是不可靠的

在Windows平台上使用Socket.sendUrgentData() 来检查连接有效性是不可靠的。除非使用OOBInline。 原文:http://www.serverframework.com/asynchronousevents/2011/10/out-of-band-data-a...
  • bourne_again
  • bourne_again
  • 2015-01-03 17:44
  • 754

java socket参数详解:OOBInline和UrgentData .

TCP的紧急指针,一般都不建议使用,而且不同的TCP/IP实现,也不同,一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据,让对方紧急处理。但是,虽然sendUrgentData的参数data是int类型,但只有这个int类型的低字节被发送,其它的三个字节被忽略。下面的代码演示了如何使...
  • lianchao668
  • lianchao668
  • 2012-08-10 18:40
  • 670

sendUrgentData(0xff) socket.getInputStream()报错

socket中判断服务器端是否断开,可以使用发送心跳包 try {               Socket socket&...
  • jazywoo123
  • jazywoo123
  • 2013-03-20 21:10
  • 2569

关于java网络编程中 java.net.SocketException: Connection reset 异常的原因

产生这个异常一般是客户端因为人为原因关闭了 Software caused connection abort: recv failed这个怍一般是客户端流关闭了
  • gfdonx
  • gfdonx
  • 2015-10-15 00:11
  • 387

request method 'post' not supported

最近做j2ee开发时,使用spring框架,用jquery的ajax方法提交表单时,遇到了request method 'post' not supported这个警告而且数据传送不成功,于是在百度上搜了一下,可能是表单提交时没有填写数据导致的以及其他可能的原因,我调试了一天,还是未...
  • huanyingfengxing
  • huanyingfengxing
  • 2012-11-01 10:29
  • 23229

curl发送post请求出现:Request method 'post' not supported

今天做一个测试,利用命令行下curl命令发送post请求,后台是springmvc,我的命令书写出了点差错。 curl -X post --data "lpsust=ZAgAAAAAAAGE9MTAwNTg2NTc0ODAmYj0xJmM9NCZkPTExN DA4JmU9RkM2ODgx...
  • feinifi
  • feinifi
  • 2017-03-15 11:35
  • 2144
    个人资料
    • 访问:58801次
    • 积分:1723
    • 等级:
    • 排名:千里之外
    • 原创:111篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条
    最新评论