当前位置:  编程技术>移动开发
本页文章导读:
    ▪虚拟机网络有关问题        虚拟机网络问题 如果WIN7 虚拟机重启后,网络设置没有了。或者是一直断开。这个时候网络不通,需要设置网络连接类型桥接 拼通》》》》》》》》》》》》》》勾选替换网络状态选项 ......
    ▪ String 引述传递or值传递        String 引用传递or值传递 //String是类  只要是类它的对象就是按引用传递的,但是String对象本身是不可变的,不可被修改 //但是可以修改指向该对象的引用啊,使该引用指向别的对象,不指向.........
    ▪ XMPP: smack exception "No response from the server&quot       XMPP: smack exception "No response from the server" http://blog.chinaunix.net/uid-22027772-id-3013644.html smack exception: No response from the server (注意:不是No response from server)产生的原因有多种:1. MessageListener未能.........

[1]虚拟机网络有关问题
    来源: 互联网  发布时间: 2014-02-18
虚拟机网络问题
如果WIN7 虚拟机重启后,网络设置没有了。或者是一直断开。这个时候网络不通,需要设置网络连接类型

桥接 拼通》》》》》》》》》》》》》》勾选替换网络状态选项

    
[2] String 引述传递or值传递
    来源: 互联网  发布时间: 2014-02-18
String 引用传递or值传递

//String是类  只要是类它的对象就是按引用传递的,但是String对象本身是不可变的,不可被修改

//但是可以修改指向该对象的引用啊,使该引用指向别的对象,不指向原来的对象

 

 

 

package com.wuxifu.test;

 

public class test

{

    String s2="abc";

    StringBuilder stringBuilder = new StringBuilder("bbb");

             public static void main(String[] args)

            {

                test test = new test();//该对象一创建就又两个成员变量  s2="abc"   stringBuilder = new StringBuilder("bbb")

                

                test.change(test.s2,test.stringBuilder);//由于s2  stringBuilder  都是类的实例化对象,所以是引用传递

                System.out.println(test.s2);//abc,注意通过上面一个方法不会改变该对象成员变量的引用

                System.out.println(test.stringBuilder);//bbbggg,注意通过上面一个方法不会改变该对象成员变量的引用

 

 

              test.change002(test.s2,test.stringBuilder);

               System.out.println(test.s2);//abc???    ,注意通过上面一个方法不会改变该对象成员变量的引用

                System.out.println(test.stringBuilder);//bbbgggggg  ,注意通过上面一个方法不会改变该对象成员变量的引用

            }

             public void change(String s2,StringBuilder stringBuilder)

             {

                // test.change(test.s2,test.stringBuilder)  调用了该方法,所以形参 s2 就是指向test.s2

               //形参stringBuilder就指向test.stringBuilder

             //变量名的引用相同,但他们还是不同的变量,不同的变量,其中任何一个可以随时指向别的对象,从而改变引用了

                 s2+="???";//s2是局部变量跟形参数一样,虽然得到了test.s2的引用,但是没用,局部变量形参就改变了引用指向别的对象  s2+"???"该对象()

                 stringBuilder.append("ggg");//stringBuilder是局部变量跟形参数一样,得到了test.stringBuilder的引用,和它指向同一个对象,形参对它指向的对象进行了修改,即对象本身被修改,所以test.stringBuilder得到对象内容就会改变

                 stringBuilder=new StringBuilder("GGGGGG");//stringBuilder是局部变量跟形参数一样,得到了test.stringBuilder的引用,和它指向同一个对象,但是又没用到,立即该形参就指向别的对象了

             }

 

 

 

         public void change002(String s,StringBuilder stringBuilder)

 

             {

 

                 

 

                 s2+="???";//对象的成员变量,非形参

 

                 stringBuilder.append("ggg");//形参修改指向对象的内容

 

                 stringBuilder=new StringBuilder("GGGGGG");//形参改变引用,指向别的对象,跟原来指向的对象断绝关系

 

             }

 

}

//形参如何改变某对象的成员变量的值呢,就是得到该成员变量指向对象的引用,通过引用传递而改变对象的内容,用的好没什么,用的不好就会误导自己,注意

 


    
[3] XMPP: smack exception "No response from the server&quot
    来源: 互联网  发布时间: 2014-02-18
XMPP: smack exception "No response from the server"
http://blog.chinaunix.net/uid-22027772-id-3013644.html



smack exception: No response from the server (注意:不是No response from server)
产生的原因有多种:
1. MessageListener未能正确处理response,详情参见
http://community.igniterealtime.org/thread/33598
2. 网络连接出现问题,smack客户端没办法收到response,详情参见(需爬墙……)
http://davanum.wordpress.com/2007/12/31/android-just-use-smack-api-for-xmpp/

今天在服务器上重现了这个问题,间歇性返回No response from the server,但是网络连接状态相当好,到该服务器的http请求都顺利返回,而且速度很快,因此不是网络连接问题。同样,并不是每次返回都报错,60%的尝试是能够成功的,因此也排除原因1

重现该exception的时候,虽然不是网络导致的原因,但是跟网络环境有密切关联:
1. 在非常稳定的网络环境下(ping值稳定在5ms左右,且没有明显的抖动)出现的概率非常小
2. 在网络抖动比较大的环境下,出现非常频繁

google说明,smack的这个exception,已经report在openfire和ejabberd上都重现过,因此证明,不是单一服务器代码的问题

通过检查smack源代码,查到No response from the server的exception出现在2个文件中:
NonSASLAuthentication.java:
          IQ response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
          if (response == null) {
              throw new XMPPException("No response from the server.");
          }


SASLAuthentication.java:
         Bind response = (Bind) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
        collector.cancel();
         if (response == null) {
             throw new XMPPException("No response from the server.");
         }

             IQ ack = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
             collector.cancel();
             if (ack == null) {
                 throw new XMPPException("No response from the server.");
             }


问题缩小到2个方面:resource bind失败,或者确实没有收到response包
由于这边的服务器采用的是NonSASL验证的方式,所以答案只剩下:确实没有收到response

在服务器上运行tcptrack,监控进入的连接,发现smack报错的时候,tcptrack的连接记录说明,该连接被reset了,也就是说,直接从syn-ack状态跳到了reset状态,因此客户端的连接直接就断开了,所以根本不可能收到response

而smack是个高度封装的库,可配置的参数非常有限,出了用户名和密码以外,跟底层链路相关的参数就只有:SecurityMode,初步判断是该参数影响了连接,因此更改默认的enable为disable,也就是不使用TLS链路跟服务器进行通信。同样,服务器也禁用TLS之后,问题状况立即得到改善。

结论:
TLS在TCP连接的基础上,需要消耗更多的网络资源和服务器资源,来进行加密运算,因此在网络抖动非常大,或者网络比较不稳定的状况下,会严重影响通信连接,尤其是不停的断开重连,如果发现smack客户端有出现No response from the server的exception,可尝试更改连接选项,disable TLS来解决问题

    
最新技术文章:
c/c++ iis7站长之家
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3