import java.beans.Statement;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Connection;
import java.util.StringTokenizer;
public class Compute_server   
{

public static void mian(String[] agrs)
{
  ServerSocket  server =null;Server_thread  thread;
  Socket  you=null;
  while (true)
  {
  try{server=new ServerSocket(4331);
         }
  catch(IOException  e1)
  {
  System.out.println("正在监听");
  }
  try{
  you=server.accept();
  System.out.println("客户端的地址"+you.getInetAddress());
  }
  catch(IOException e2)
  {
  System.out.println("正在等待客户");
  }
  if(you!=null)
  {   
  
    new Server_thread(you).start();
    
  }
  else
  {
  continue;
  }
  
   
  
  
  
}
   
}
class   Server_thread  extends Thread  
{    DataInputStream in ;
DataOutputStream  out;
Socket  socket;
Connection  con=null;
Statement  stmt=null;
String  s=null;
Server_thread(Socket  t)
{
   socket  =t;
   try
   {
   in =new DataInputStream(socket.getInputStream());
  out=new DataOutputStream(socket.getOutputStream());
   
   }
   catch(IOException e2)
   {
   
   }
}

public void run()
{
while (true)
{
double a[]=new double[3];
int i=0;
try{
s=in.readUTF();
StringTokenizer  fenxi=new StringTokenizer(s,",");
while(fenxi.hasMoreTokens())
{
String  temp=fenxi.nextToken();
try
{
a[i]=Double.valueOf(temp).doubleValue();
i++;
}
catch(NumberFormatException  e)
{
out.writeUTF("请输入数字字符");
}
}

double p=(a[0]+a[1]+a[2])/2;
out.writeUTF(""+Math.sqrt(p*(p-a[0])*(p-a[1])*(p-a[2])));
sleep(2);
}
catch(InterruptedException  e){}
catch(IOException e)
{
System.out.println("客户端开");
  break;
}



    }
}


}
}在Eclipse上运行时显示是   new Server_thread(you).start();  这个地方有错 。一直搞不明白 这里哪错了

解决方案 »

  1.   

    public static void mian(String[] agrs) 这句???!!!
      

  2.   

    Server_thread 你写成了内部累,所以需要一个外部类才能使用,比如new Compute_server().new Server_thread(you).start();如果你把 Server_thread 写成单独的类,就简单了。
      

  3.   

    import java.applet.Applet;
    import java.awt.Button;
    import java.awt.GridLayout;
    import java.awt.Label;
    import java.awt.Panel;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    public class Computer_client  extends Applet  implements  Runnable,ActionListener

    Button  jisuan;
    TextField  shuru,jieguo;
    Socket  socket;
    DataInputStream  in=null;
    DataOutputStream  out=null;
    Thread  thread;
    //String s1,s2;
     public void init()
     {
     setLayout(new GridLayout(2,2));
     Panel  p1=new Panel(),p2=new Panel();
     jisuan=new Button("计算");
     shuru=new TextField(12);
     jieguo =new TextField(12);
     
     p1.add(new Label("请输入三角形的三边长,用逗号隔开:"));
     p1.add(shuru);p2.add(jisuan);p2.add(new Label("结果:"));p2.add(jieguo);
     jisuan.addActionListener(this);
     add(p1);add(p2);
     
     
     
     
     }
     public void start()
     {
     try{
     socket=new Socket(this.getCodeBase().getHost(),4331);
     in=new DataInputStream(socket.getInputStream());
     out=new DataOutputStream(socket.getOutputStream());
     }
     
     catch(IOException  e){}
     
     if(thread==null)
     {
     thread=new Thread(this);
     thread.start();
     
     }
     
     }
     
     
     public void run()
     {
     String  s1=null;
     while(true)
     {
     try{
     s1=in.readUTF();
     jieguo.setText(s1);
     }
     catch(IOException  e2)
     {
     jieguo.setText("与服务器段开");
     break;
     }
     }
     }
     public void actionPerformed(ActionEvent  e3)
     {
     
    // String  s2=shuru.getText();
     if(e3.getSource()==jisuan)
     {
     String  s2=shuru.getText();
    if(s2!=null)
    {
     try{
     out.writeUTF(s2);   
         }
     catch(IOException e4)
     {
     
     }
     }
     }
     }
    }
    那这个程序是和上面的连一块的  这里为什么老是 不能按照预想去执行呢  好像s1=in.readUTF();出问题了 可是我又不知道怎么弄得 初学者真是痛苦啊  求指点