首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
J2ME
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
关于J2ME 的网络设计
[已结贴,结贴人:bohemianren]
加为好友
发送私信
在线聊天
bohemianren
波西米亚
等级:
发表于:
2008-04-29 10:45:12
楼主
我现在的做法的是创建一个线程,然后wait();需要连接的时候notify();大致如下:
public class HttpTask{
public void getConnect(){
httpConnection = (HttpConnection) Connector.open(URL);
//……
inputStream = httpConnection.openInputStream();
//……
} catch (Exception e) {
//……
} finally{
//……
}
}
public void cancel(){
try{
httpConnection.close();
httpConnection = null;
httpConnection.openDataInputStream();
}catch(Exception e){
//……
}
}
}
public class extends Thread{
HttpTash ht = new HttpTask();
public synchronized void run(){
while(!isExit){
wait();
ht.getConnect();
}
}
public synchronized void startHttp(){
notify();
}
public void stopHttp(){
ht.cancel();
}
}
但是现在有一个问题,就是调用cancel()之后紧接着再次发起请求就会 hang住,
原因应该是ht.getConnect();没有返回,也就是在调用cancel的时候没有立即结束HTTP连接,现在的产品需求是,在网络连接时按下取消会弹出“是否重新建立连接”的提示
大家帮帮忙,我这样做结构有问题吗?如果有问题我改怎么去设计?如果没有问题,我改怎么样去取消一个网络连接,并让他立即返回呢
问题点数:
20
回复次数:
6
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zs_han
流浪在星空
等级:
发表于:
2008-04-29 10:51:03
1
楼 得分:
0
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
asiafuqiang
asiafuqiang
等级:
发表于:
2008-04-29 11:22:01
2
楼 得分:
0
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cuilichen
fjfjfjfj
等级:
发表于:
2008-04-29 11:47:01
3
楼 得分:
0
楼主的cancel方法中,怎么会这样写呢?
httpConnection.close();
httpConnection = null;
httpConnection.openDataInputStream();
第三句会出错吧?难道不是一个空指针吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bohemianren
波西米亚
等级:
发表于:
2008-04-29 13:52:38
4
楼 得分:
0
引用 3 楼 cuilichen 的回复:
楼主的cancel方法中,怎么会这样写呢?
httpConnection.close();
httpConnection = null;
httpConnection.openDataInputStream();
第三句会出错吧?难道不是一个空指针吗?
原来是这样写的:
try{
httpConnection.close();
httpConnection = null;
}catch(Exception e){
//……
}
后来有个人和我说,加一个调用httpConnection函数的语句,目的就是让httpConnection抛出异常,效果会好些;
结果我加了,没变化
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yanhan0615
炮炮
等级:
发表于:
2008-04-29 16:36:52
5
楼 得分:
20
楼主你何必要做这么麻烦,你都单独使用一个线程来做连接了,那么你要取消的时候就是把这个线程销毁,并且该线程连接返回的数据全部不处理就可以了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
knowledge_Is_Life
阿凡
等级:
发表于:
2008-04-30 19:11:09
6
楼 得分:
0
该回复于2008-05-01 05:44:06被版主删除
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友