为什么向服务器发送4个以上中文字符服务器才接的到

服务器端:
public class Service {

public static void main(String args[]) throws Exception{
Socket client1 = null;
boolean b=true;
System.out.println("1111");

ServerSocket server = new ServerSocket(8080);
while(b){
client1=server.accept();
System.out.println("连接");
new Thread(new server(client1)).start();
}
server.close();
}
public class server implements Runnable{
Socket client;
public server(Socket client){
this.client=client;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("服务端运行");
boolean f=true;
try {
System.out.println("客户端已连接");
boolean bo=true;
PrintStream p=new PrintStream(client.getOutputStream());
BufferedReader buf=new BufferedReader(new InputStreamReader(client.getInputStream()));

String s=buf.readLine();

System.out.println("客户端打"+s+"时间"+time);
p.println(s);
p.flush();
buf.close();
p.close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
private class SendOnClickListenerImpl implements OnClickListener{
@Override
public void onClick(View view) {
try {
Socket client = new Socket("192.168.1.098"
,8080);// 指定服务器
PrintStream out = new PrintStream(
client.getOutputStream());// 打印流输出
BufferedReader buf = new BufferedReader(
new InputStreamReader(
client.getInputStream()));// 缓冲区读取

out.println("啊");// 发送数据
out.flush();
MyClientDemo.this.info.setText(buf.read());// 设置文本
out.close();// 关闭输出流
buf.close() ;// 关闭输入流
client.close();// 关闭连接
} catch (Exception e) {
e.printStackTrace();
}
}
}

我又发现了一个有趣的事,单数数量的中文字符发不出去,比如1,3,5,7,9,双数的中文字符就可以

http://ask.csdn.net/questions/198597

打印输出流使用的是字节流,而服务器端的输入流使用的是字符流,写入中文是按照utf-8写的,可以去查看下utf-8的字符编码,是不是中文站四个字节
全部统一就好了,要么就全用字节流,要么就全用字符流,别混着用