banq大大,
第六章里面有些地方用了你自己先定义好的class,但是光盘里没有源码文件,只有class文件。如ServiceLocator,UserEvent etc.
是否可以给我啊
rick47@21cn.com

多谢指点,ServiceLocator在PetStore源码中有,UserEvent等其它源程序见本附件 新的第六章源代码包。

banqNec65sa7R8.rar

谢谢banq大大及时回复。
我觉得这本书如果再详细点就好了,现在这样感觉有点像上课用的讲义。
^_^
NIO中,SelectionKey.OP_WRITE是什么事件?
READ事件很好理解,就是socket有数据才会触发,WRITE事件怎么理解呢?可以发?什么条件下触发?会连续触发吗?

对socket是不是一定要读一次写一次这样交替进行?如果不是,第一章的TCPClient类可能有问题(25页),run()方法同时负责读写socket,如果messageList.removeReqFirst()方法读不到数据就会使线程停在这里,如果用户不再发数据了,线程就一直wait了,难道这样客户端也收不到任何数据了吗?作为聊天室用户不发数据了应该还可以看到其他用户发的数据。

banq大大
仍然是第六章的问题
你提供下载的新代码和CD里面的代码,好像都少了这个包
com.jdon.sequence.SequenceGenerator

你新提供的那个文件用JB打开后编译时出错的,就是少了上面这个咚咚。

是不是能提供这章例子完整的代码?
以便学习。谢谢。

多谢kofboy仔细阅读。
WRITE事件事件是在你告诉Selector需要监听Write事件了,并且你向Socket写数据时出发。

这个聊天室设计原理是,其它用户都是通过Server进行彼此通讯,因此,一个客户端只要监听来自服务器的消息就可以,没有就等待在那里。客户端之间不直接通讯,如果你需要,可以增加这个功能。

to rick47
com.jdon.sequence.SequenceGenerator只是一个ID产生器,就是产生唯一ID的,你可以使用自己的产生器,甚至删除涉及com.jdon.sequence.SequenceGenerator的代码,基本不影响系统运行。

还是不太明白。

多谢kofboy仔细阅读。
WRITE事件事件是在你告诉Selector需要监听Write事件了,并且你向Socket写数据时出发。

这个聊天室设计原理是,其它用户都是通过Server进行彼此通讯,因此,一个客户端只要监听来自服务器的消息就可以,没有就等待在那里。客户端之间不直接通讯,如果你需要,可以增加这个功能。


1。向socket写时触发?既然已经写了触发后还能干什么呢?再写一次?

2。我知道这个聊天客户端是只和server通讯,但是removeReqFirst()会使线程等待(不是你说的等待来自服务器消息,而是等待用户输入),如果客户段不再输入数据到消息列表,那这个线程就永远不会唤醒吗?就是说某个用户在聊天室不发言就看不到任何东西了?

关键在于客户端 doKey()方法。
doKey方法监测读和写的事件。
那removeReqFirst()方法呢?第25页。
用户不输入现程就死在这里了吗?
removeReqFirst()是监测与服务器通讯的数据Queue,只要服务器有数据过来,Queue中就有数据,removeReqFirst()就会工作啊。
对,问题就在这里。读写是双向的。
而P25页的程序是一个TCPClient线程处理读和写。
如果removeReqFirst()等待Queue收数据的时候就发不了,等待发数据的时候就收不了。
就是说wait()在一个方向,另外一个方向也不能工作了。

而且这里也不是你说的监测与服务器通讯的数据,这个Queue只是监测客户段的输入,main()线程模拟用户输入了100条消息,并且放到Queue里,TCPClient线程被唤醒把这100条消息发出去,发完100条后呢?这个线程发现Queue里没数据了就一直wait()下去,服务器发来的数据就完全不能处理了。你再好好看一下25页这个程序吧。如果作为客户段一定要发了数据后才能收数据,不发的时候就不能收,这也太不合理了吧。

多谢kofboy这么认真,我不是很明白你的意思,这个程序我已经通过功能测试和性能测试。希望有机会当面讨论,谢谢。
banq能把这两个类发给我吗,我在运行第五章接口程序的时候不能正确编译通过,感谢.
com.jdon.util.Debug;
com.jdon.util.PropsUtil;
我的E-MAIL:youfengyang@sohu.com
banq老大,我在用本书第五章光盘中"接口框架"调用的时候出现少了这么多的类文件,请您发给我好吗,我现在根本不能编译运行通过,感谢.
EMAIL:youfengyang@sohu.com
com.jdon.util.UtilCache;
com.jdon.servicelocator.ejb.ServiceLocator
com.jdon.servicelocator.ServiceLocatorException
com.jdon.servicelocator.web.ServiceLocator
com.jdon.controller.Constants
com.jdon.util.Debug
org.apache.log4j.Logger;
com.jdon.util.PropsUtil;
com.jdon.util.ObjectCreator;
com.jdon.util.UtilValidate;
com.jdon.util.XmlUtil