java网络编程有关问题:返回多行数据

java网络编程问题:返回多行数据
现在实在是不知道怎么办了,只能求助于CSDN了,小弟的情况是这样的:需要从一个文本中读取多行数据,返回给客户端,之前编写的代码是这样的,客户端:
BufferedReader br = Common.getReader();
System.out.println(br.readLine());

服务端:
for(int i =0;i<listStr.size();i++)
        pw.println(listStr.get(i).getWord()+" "+readtext.print(listStr.get(i);

我把多行数据放到一个List类型的变量里面,就是listStr。
其中Common是我自己建的一个类,getReader()是自己建的一个方法,大概意思就是获得从服务器端发来的数据。这时,问题来了,每次从服客户端发出命令,只返回一行数据,没按一次回车,返回一个。找了半天原因,改了一下客户端代码:
改动后的客户端代码:
while((msg = br.readLine())!=null)
System.out.println(msg);

这个时候可以返回多行数据了,但是,输入一次命令就不能输第二次了,也就是说客户端不接受命令,也是醉了,诸位神,帮帮忙啊!
------解决思路----------------------
socket在读取数据的时候会阻塞。这种情况一般用多线程吧。

final BufferedReader br = xxx;
new Thread(){
public void run(){
while((msg = br.readLine())!=null){
System.out.println(msg);
}
}
}.start();
//do something else...