import java.net.*;
import java.io.*;public class  SimpleCilent
{
public static void main(String[] args) 
{

Socket cilent = null;
try
{
cilent = new Socket("192.168.0.14",8000);

if (cilent !=null )
{ InputStream s1 = cilent.getInputStream();
OutputStream s2 = cilent.getOutputStream();

BufferedReader input = new BufferedReader(new InputStreamReader(s1));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s2));

PrintWriter print = new PrintWriter(output);

BufferedReader inputLine = new BufferedReader(new InputStreamReader(System.in));

while (true)
{
System.out.println("please enter content:");
String s = inputLine.readLine();

print.println(s);
print.flush(); if (s.equals("quit"))
{
break;
}
else
{
String i_line = input.readLine();
System.out.println(i_line);
}
} }

}
catch(Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (cilent !=null )
{
cilent.close(); } }
catch(Exception e1)
{
e1.printStackTrace();
} }

}
}
import java.net.*;
import java.io.*;
public class  SingleServer
{
public static void main(String[] args) 
{
ServerSocket server = null; int singleNumber; try
{
server = new ServerSocket(8000); Socket form = server.accept();//此方法实现数据传输(客户端套接字)


if (form != null)
{ System.out.println("start ...."+form);

InputStream s1 = form.getInputStream();
OutputStream s2 = form.getOutputStream(); BufferedReader input = new BufferedReader(new InputStreamReader(s1));

BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s2));


PrintWriter print = new PrintWriter(output);
while (true)
{
String s = input.readLine();
System.out.println("来自客户端消息-------"+s); if (s.equals("quit"))
{
break;
}
print.println("服务器收到的数据-----"+s); print.flush();
}
}
}
catch(Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (server !=null )
{
server.close();
System.out.println("服务端关闭");
} }
catch(Exception e1)
{
e1.printStackTrace();
} }
}
}
我应该怎么修改这个程序:来达到以下目的
一个多线程服务端用来计算圆面积,从客户端接受半径输入然后将计算结果返回给客户端

解决方案 »

  1.   

    import java.net.*;
    import java.io.*;
    public class Server
    {
    private ServerSocket server;
    private Socket you; 
    public Server()
    {
    try
      {
       server = new ServerSocket(9001);
                    System.out.println("服务器运行中,监听端口:9001......");
       while(true)
       {
       you = server.accept();
         if(you != null)
                      System.out.println("有客户连接,启动服务线程......");
                      new Thread(new receive(you)).start();
                      System.out.println("处理完成,继续监听......");
       }
      }catch(Exception e){System.out.println("服务器监听出错!");}
    }

    public static void main(String args[])
    {
    new Server();
    }
    }class receive implements Runnable
    {
    DataInputStream din;
    DataOutputStream dout;
    Socket you;
    String str;
    int lens;
    double area;
    public receive(Socket you)
    {
    this.you = you;
    }
    public void run()
    {
    try
    {
            din = new DataInputStream(you.getInputStream());
            dout = new DataOutputStream(you.getOutputStream());
            while(true)
            {
             if((str = din.readUTF()).equals("exit"))
             break;
             lens = din.readInt();
             area = 3.14 *(lens*lens);
             dout.writeDouble(area);
            }
            dout.close();
            din.close();
            you.close();
      }catch(Exception e){}
    }
    }
      

  2.   

    import java.net.*;
    import java.io.*;public class Client
    {
    private Socket you;
    public Client()
    {
    try
    {
       you = new Socket("127.0.0.1",9001);
      System.out.println("连接服务器端口:9001.......");
      if(you != null)
      {
       System.out.println("连接成功,等待输入圆半径:");
       new Thread(new SendData(you)).start();
      }
    }catch(Exception e){}

    }

    public static void main(String args[])
    {
    new Client();
    }
    }class SendData implements Runnable
    {
    private String str;
    private int lens;
    private DataInputStream din;
    private DataOutputStream dout;
    private BufferedReader bin;
    private Socket you;
    public SendData(Socket you)
    {
    this.you = you;
    }

    public void run()
    {
    try
    {
      din = new DataInputStream(you.getInputStream());
      dout = new DataOutputStream(you.getOutputStream());
                      bin = new BufferedReader(new InputStreamReader(System.in));
      while(true)
      {
      
       if((str = bin.readLine()).equals("exit"))
       break;
       lens = Integer.parseInt(str);
       dout.writeUTF("OK");
       dout.writeInt(lens);
       System.out.println("圆面积:" + din.readDouble());
      }
                         bin.close();
      dout.writeUTF("exit");
      dout.close();
      din.close();                 
      you.close();
      }catch(Exception e){}

    }
    }
    编译运行,没有问题,这是在命令行下运行的,想加界面的话,自己加就是了
      

  3.   

    1.客户端要验证输入的合法性(不难,自己写写).
    2.服务器端就多一个线程:
    .......server..........
    while (true)
    {
    String s = input.readLine();
    System.out.println("来自客户端消息-------"+s);if (s.equals("quit"))
    {
    break;
    }
    new Thread(){
    try{
    int r=Integer.valueOf(s).intValue();
    print.println("半径:"+s);
    long area=3.14*r^2;
    print.println("面积:"+area);
    }catch(Exception e){}
    }.start();
    }
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }