SocketConnection 参数详细介绍

SocketConnection 参数详细介绍
文章分类:移动开发
请大家看下面的代码:
len = is.read(gData);
这句代码会阻塞在这里,用了上面红色标出的代码后,能不能实现,超过5秒没反应后,read就不阻塞,而向下执行代码! 
try
{
int len = 0;
    sc = (SocketConnection) Connector.open("socket://100.42.25.3:885");
    is = sc.openInputStream();
    os = sc.openOutputStream();
    sc.setSocketOption(SocketConnection.LINGER, 5);
    pmm.gDataBuf = null;
    sender = new Sender(os);
    sender.send(pmm.gStringReq);
    // Loop forever, receiving data
    gData = new byte[pmm.BUF_LENGTH];
    currentIndex = 0;
    gBuf = new byte[50*1024];
    while (!pmm.bStopConnect)
    {
len = is.read(gData);
    System.arraycopy(gData,0,gBuf,currentIndex,len);
    currentIndex += len;
    if(currentIndex > 300){
    if(newVerifyXml()){
    if((currentIndex%8) != 0){
    int left = 8 - currentIndex%8;
    byte[] byteTmp = new byte[left];
    is.read(byteTmp);
}
    opHandle();currentIndex=0;
    }
    }
    }
    stop();
} catch (ConnectionNotFoundException cnfe) {
    Alert a = new Alert("错误", "无法连接服务器", null, AlertType.ERROR);
    a.setTimeout(Alert.FOREVER);
    display.setCurrent(a) ;
} catch (IOException ioe) {
    if (!stop) {
ioe.printStackTrace();
    }
} catch (Exception e) {
    e.printStackTrace();
}
实现不了吧, 你弄个timer吧。 超时就把所有object 设置为null
 
SocketConnection.DELAY:开启Nagle算法?(0/1)
SocketConnection.LINGER:服务器悬挂等待时间
SocketConnection.KEEPALIVE:长连接时间
SocketConnection.RCVBUF:接收缓冲
SocketConnection.SNDBUF:发送缓冲
不过虚拟机上可能支持的不好,或者不保证每次都准确
建议使用定时器
超时就把该关流,连接的全关了
再置null

你可能感兴趣的:(java,职场,休闲)