关于banq的《用Java NIO开发高性能聊天系统》疑问

tecentID0FE05 13-12-05
    

最近学习多线程,仔细研究了一下banq大大的《用Java NIO开发高性能聊天系统》实例,跑了一下源码,用在swing下做了client进行连接server,遇到了以下问题:
启动client的JFrame时,在JFrame里初始化client的连接,用来连接server,把此链接定义为:

private static Connection conn;

初始化后,第一次使用此链接可以正常连到server,并且能发送和接收回传信息。
但是在第一次以后再使用此链接发送信息却发送不出去,服务器接收不到信息。通过debug查看conn内的信息是正常的,但是就是触发不了服务器响应。请问这是为什么呢?是否需要每次client发送信息之前都需要重新进行一次Connection初始化连接呢?
望banq大大帮忙解答一下,感谢!

    

1
banq
2013-12-06 07:23

这是2004年写的,年代久远,细节不是很清楚。这是一种请求响应方式,一次请求一次响应,连接结束,下次请求重开一个连接,得到响应再关闭,

见Node.js的客服代码,两者类似:http://www.jdon.com/idea/nodejs/tutorial2.html

tecentID0FE05
2013-12-06 10:29


2013-12-06 07:23 "@
banq"的内容
这是2004年写的,年代久远,细节不是很清楚。这是一种请求响应方式,一次请求一次响应,连接结束,下次请求重开一个连接,得到响应再关闭,

见Node.js的客服代码,两者类似:http://www.jdon.com/idea/nodejs/ ...


Node.js的客服代码里使用的是http协议,和这聊天系统直接使用的socket tcp连接似乎有点不一样。不过现在我知道了如果要只开始连接一次以后就不用重新连接的话,就得让socket进行长连接,客户端在发送时候一样不关闭socket和流就可以了。不过不知道这样的长连接会不会带来严重的性能问题?感谢!