sc.setSocketOption(SocketConnection.LINGER, 5);
打开socket连接了,设置这个flag!
请问有什么效果!
请大家看下面的代码:
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();
}
打开socket连接了,设置这个flag!
请问有什么效果!
请大家看下面的代码:
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();
}