//以下代码要实现一秒向客户浏览器输出一个"ok",可目前的代码一个都输不出..
String newLine;
try{
while((newLine = input.readLine()) != null);
}
catch(SocketException e) { }你这里,明明是在读,怎么会是发送呢??
newLine = input.readLine()) 不懂啊不懂!!!!!!
String newLine;
try{
while((newLine = input.readLine()) != null);
}
catch(SocketException e) { }你这里,明明是在读,怎么会是发送呢??
newLine = input.readLine()) 不懂啊不懂!!!!!!
解决方案 »
- 编码转换
- 马上结贴,写三句半代码实现适配器模式,大家看看对不对??
- 很奇怪的问题啊。单独运行没有问题。用wrapper运行也没有问题。但是用wrapper注册成服务运行就生成不了图片了。
- 请问哪里可以下载到commons-codec-1.x.jar ,httpclient 用
- 大家帮我看看这个程序分析的对不对?请高手指教
- java swing下的JProcessBar怎么复原的,请高手指点下
- 请问一下逻辑操作(&,|,^)与条件操作(&&,||)的区别???
- 泛型怎么传参数
- 求助:删除J2SDK出现问题!(在线等待)
- 有谁了解java的在sun公司的考试
- 请问学jsp需要具备哪些知识
- 方法里面还可以有方法吗?我这个方法应该放在什么地方?
socket.close();或者PrintStream .close()把流或者socket关闭,否则之前print的内容在客户浏览器根本无法显示出来,IE一直是loading的状态.
okokokokokokokokok..............................这么难以理解?
看来你得去多了解 HTTP 协议了.
呵呵, 这和普通的 socket 编程有点不同的哦!问题就是目前除非我使用
socket.close();或者PrintStream .close()把流或者socket关闭,否则之前print的内容在客户浏览器根本无法显示出来,IE一直是loading的状态.
呵呵
这是 HTTP 协议决定的! 没有其他办法.
不是的,你有没有写过socket的聊天室?而且目前我的情况是前台用 javascript的frame.reload()一下,就可以正常达到效果了
呵呵, 我用 socket 的 IE 做客户端, 和 使用 Java swing 做客户端的都写过.
建议你 看看 HTTP 协议.
了解 IE 的工作过程hehe,你这么厉害连一秒向客户IE push一个ok就认为无法做到?
那你能否解释为什么我点一下刷新就正常了呢?
照你的逻辑网易的聊天室又是如何做成的? - -
看来你真是对 HTTP 不了解啊!!IE 向 WEB Server 请求一个网址,在接受到全部的内容后,就断开连接.
至于如何才是接受到了全部的内容,HTTP 规范有定义的.
如果服务器,没有发送一个完整的 HTTP 内容,IE 不知道内容已经结束,(就象你做的一样). 服务器就必须自己断开 连接 , 要不 IE 会一直 Loading , 因为 IE 不知道"内容已经结束了"这就是为什么, socket.close();或者PrintStream .close()把流或者socket关闭,否则之前print的内容在客户浏览器根本无法显示出来,IE一直是loading的状态. 的原因.你用 javascript的frame.reload()一下,就可以正常达到效果了
那是 IE 已经放弃了前一次请求的内容,又新一次请求内容了,当然能刷新一下,但还是会一直 loading .而且使用 frame.reload() 实现,会有明显的闪烁, 效果不好, 使用 XMLHTTP 才是正确的方法.多学点基础知识吧!!!!
你懂socket么?对自己一无所知的东西就不要瞎扯.这里不是招聘会.别把人都想得比你傻.
以前java实现的机制和c++以及其他的不是很一样,用的是线程,而unix里面可以用select socket的,单线程来处理,这样子效率最高,cpu使用率最高。不过以前java限制没有select socket类,所以只能用线程处理。你的基本的思路是对的,但是在系统的结构上要调整下。
1、怎么保持http连接不断,确实没错,要每隔多少时间向客户段输出个数据,比如<!>,这个时间每个人不一样,这是根据IE的超时时间决定的,一般10秒-20秒差不多了,不过你少写了一个flush()方法,所以没有输出。
2、这种hold on socket的事情不要给每个socket分个线程来做,在有新的连接进来,处理完当前请求后,如果是主窗口的socket,则把它加进一个hashmap即可,让另外一个线程来循环 hold on 所有的socket,其他的请求处理完则关掉。
强啊,Echat我用过,后来改用Fchat,因为可以连接IDBC :#)程序我是使劲简化了放上的,为了看的清楚,
我想问题可能出在 output.flush()或者socket.setsotimeout(0)这样的方法上
可我把output.flush()放在任何地方都无法输出内容能不能帮我修改一下顶楼的代码达到我要的功能?分一定全部送上,谢谢!