s=in.readUTF();
你的这一句从流里面根本就不会读出什么来,知道为什么吗?因为服务器先启动,然后才是客户端的启动。客户端传送一个信息到服务器上是要一定时间的,并不是客户端一传,服务器上马上就收到了的。正是由于网络延迟这个原因(严格的说这样的情况不能叫做网络延迟),你上面的这条语句就有问题,很可能执行这条词句的时候信息还在网络上传递,结果S就成为一个空串了。这条语句要改成
while(true)
{
  s=in.readUTF();
  if (!s)
   break;
}
只有这样才能保证S一定不为空,是客户端传过来的信息。