我有个服务端,客户端已经建立连接。一般的做法是轮询inputstream判断有没有数据流入。我想要的效果,在数据流入inputstream的时候做一些处理,只要加入我自己的处理就可以,打印一个字符串也行。(像MINA一样只要session有活动就有事件触发。)http://blog.csdn.net/zapldy/article/details/5813984就是这里的图1中receive阶段插入我的事件
解决方案 »
- java中怎么创建了俩对象?
- 有关jsp 组合多条件查询例如既有下拉框还有文本框
- 能否在程序中修改proxool的配置
- 请问大家一个关于windows 和 linux 下的 编码问题?
- 求教,我已经安装了java虚拟机,为什么安装tomcat5时,安装程序一直提示找不到虚拟机?
- 请教struts中参数传递的问题
- servlet和EJB中的传址和传值
- 项目中有个算法写不出来了,求助各位大虾们
- jsp反编译 class反编译成java 修改以后怎么重新打包
- bootstrap大神看过来 求助
- 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()。
无论是谁,总要有人负责去读流。最后只能是封装在哪里的问题而已。