我有个服务端,客户端已经建立连接。一般的做法是轮询inputstream判断有没有数据流入。我想要的效果,在数据流入inputstream的时候做一些处理,只要加入我自己的处理就可以,打印一个字符串也行。(像MINA一样只要session有活动就有事件触发。)http://blog.csdn.net/zapldy/article/details/5813984就是这里的图1中receive阶段插入我的事件
解决方案 »
- 求教一个问题 有个东西 忘记叫什么了
- 跪求大侠指点下!如何解析XML
- Hibernate的session问题
- java正则表达式 数字匹配
- tomcat4做WEB SERVER,通过http://www.xxx.com域名访问,总是自动跳转到http://www.xxx.com/index.jsp
- axis运行错误!
- 使用java ee整套技术的话,网站前端是不是最好用JSF啊?还有更好的选择么?
- !!!进来吧,菜鸟急需解决的问题!!!
- 有人在solaris下用过fop吗?
- 在java中如何防止二重启动,相当于VB中函数App.PrevInstance的功能
- The method getHibernateTemplate() is undefined for the type XX
- 在junit中测试能更新数据,但启动tomcat后hibernate能插入数据但无法更新数据
就是想要socket在有数据流入的时候主动通知我(当然也不是简单得将轮询做法放入SOCKET里面),而不是我在socket外部通过轮询方式来了解socket是否有数据流入。
你的意思就是,我的Socket服务端,不需要while去使劲获取客户端是否请求数据。 你想把这种改成 回调函数。这是不可能的吧,你的客户端和服务端是不同的程序,你必须保证有服务端监听的那共同的端口,既然是监听那肯定是一直获取是否有不同IP对着端口的请求。
一个传输文件例子。
好像你理解错了意思,不需要轮询inputstream。只是把你期望的“数据一到输入流”这个时机改为“程序一读取流”,并不需要额外轮询,没数据的时候执行读,仍然是常规的阻塞而已。当然可能你希望走事件机制,那么传统IO是不行的,你要用NIO。
额,,是你没理解我的说法,呵呵,,这种做法依然是要,不停的去READ(),这个跟轮询INPUTSTRAM区别并不是非常大。我也在找非阻塞的,请问有没有好的资料啊?,,我看了些NIO的,很多都封装太全,给我其他的一些操作带来麻烦。
恩,我就是想要给他加上Observer 模式,所以在找方法。
即便是事件机制,你还是要去read(),不会因为启动了事件机制而不需要read()。
无论是谁,总要有人负责去读流。最后只能是封装在哪里的问题而已。