下面代码有没错,高手给看看。编写一个客户/服务器程序qmj,服务器端的功能是计算圆的面积。客户端将圆的半径发送给服务器端,服务器端计算得出的圆面积将发送给客户端,并在客户端显示。qmjClient:import java.io.*;
import java.net.*;public class qmjClient
{
   public static void main(String[] args)
   {
      try
  {
 Socket socket=new Socket("127.0.0.1",4700);
         
         PrintWriter os=new PrintWriter(socket.getOutputStream());
         BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));         BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));         String readline;
         readline=sin.readLine();         while (!readline.equals("bye"))
         {
            os.println(readline);
            os.flush();
            System.out.println("圆的半径:"+readline);
            System.out.println("圆的面积:"+is.readLine());
            readline=sin.readLine();
         }
os.close();
         is.close();
         socket.close();
       }
       catch (Exception e)
       {
          System.out.println("Error:"+e);
       }
    }
 }qmjServer:import java.io.*;
import java.net.*;public class Cx2Server
{
   public static void main(String args[]) throws IOException
   {
 int clientnum=0;
      ServerSocket serversocket=null;
      try
      {
         serversocket=new ServerSocket(4700);
      }
catch (IOException e)
      {
         System.out.println("Could not listen on port:4700.");
         System.exit(-1);
      }
      Socket socket=serversocket.accept();     try
      {
      String line;
                BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                PrintWriter os=new PrintWriter(socket.getOutputStream());                BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));                int r;
                double mianji;                r=integer.parseint(is.readline);
                mianji=3.14*r*r;                while (!line.equals("bye"))
                {          os.println(mianjistr);
         os.flush();
         System.out.println("圆的面积:"+string.valueof(mianji));
         System.out.println("圆的半径:"+string.valueof(r));
         line=sin.readLine();
              }            
os.close();
                is.close();
         }
         catch (Exception e)
         {
         System.out.println("Error:"+e);
      }    socket.close();
      serversocket.close();
   }
}

解决方案 »

  1.   

    public class Cx2Server { public static void main(String args[]) throws IOException
    {
    ServerSocket serversocket=null;
    try
    {
    serversocket=new ServerSocket(4700);
    }
    catch (IOException e)
    {
    System.out.println("Could not listen on port:4700.");
    }
    Socket socket=serversocket.accept(); try
    {
    BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter os=new PrintWriter(socket.getOutputStream());
    int r = 0;
    double mianji;
    try
    {
    r=Integer.parseInt(is.readLine());
    }
    catch(NumberFormatException e)
    {
    System.out.println("结束了。");
    os.close();
    is.close();
    socket.close();
    serversocket.close();
    }

    mianji=3.14*r*r;
    while (true)
    {
    os.println(mianji);
    os.flush();

    }
    catch (Exception e)
    {
    System.out.println("Error:"+e);
    socket.close();
    serversocket.close();
    }
    }
    }
      

  2.   

    public class qmjClient { public static void main(String[] args)
    {
    try
    {
    Socket socket=new Socket("10.168.53.54",4700); PrintWriter os=new PrintWriter(socket.getOutputStream());
    BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); String readline;
    readline=sin.readLine(); while (!readline.equals("bye"))
    {
    os.println(readline);
    os.flush();
    System.out.println("圆的半径:"+readline);
    System.out.println("圆的面积:"+is.readLine());
    readline=sin.readLine();
    }
    sin.close();
    os.close();
    is.close();
    socket.close();
    }
    catch (Exception e)
    {
    System.out.println("Error:"+e);
    }
    }}
      

  3.   

    给你另一种写法,调试通过的。
    //service
    package db;
    import java.io.*;
    import java.net.*;public class ServerTest
    {
    public static void main(String args[]) throws IOException
    {
    int clientnum=0;
    ServerSocket serversocket=null;
    try
    {
    serversocket=new ServerSocket(1111);
    }
    catch (IOException e)
    {System.exit(-1);
    }
    Socket socket=serversocket.accept();
    System.out.println("COMING-------");try
    {
    String line=null;
    DataInputStream dis=new DataInputStream(socket.getInputStream());
    DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
    while (true)
    {
    System.out.println("输出半径");
    String r1=dis.readUTF();
    if("byte".equals(r1))break;
    String s=(3.14*Integer.parseInt(r1)*(Integer.parseInt(r1)))+"";
    dos.writeUTF(s);
    System.out.println("面积:"+s);

    }
    catch (Exception e)
    {
    System.out.println("Error:"+e);
    }
    }

     
     //client
    package db;
    import  java.io.*;
    import java.net.*;public class ClientTest
    {
    public static void main(String[] args)
    {
    try
    { Socket socket=new Socket("10.164.109.31",1111);
    DataInputStream dis=new DataInputStream(socket.getInputStream());
    DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));    String readline;
    System.out.println("输入半径------");
       while (true)
       {  readline=sin.readLine();
    System.out.println("半径:"+Integer.parseInt(readline));
    dos.writeUTF(readline);
    String s=dis.readUTF();
    System.out.println("面积:"+s);   }}
    catch (Exception e)
    {
    System.out.println("Error:"+e);
    }
    }
    }
      

  4.   

    那就看看!你那buffereReader中的readLine()方法的问题!!因为他要有一个\n!!你看看有没掉!了