问题是这样的,有三个类Client,MyServer和Hello。Client通过SOCKET给MyServer传字符窜,我想通过把这个字符窜赋值给MyServer中的静态变量,然后有Hello类调用MyServer.Get()得到这个字符窜,
但总是得到这个静态变量得初始值。具体类如下:(本质就是如何做到让A类该B类中的静态变量,然后C类可以获得这个改变后的变量值)MyServer类:
import java.net.*;
import java.io.*;public class Client{
 static Socket server;
 
 public static void main(String[] args)throws Exception{
  System.out.println("please input you message:\n");
  server=new Socket(InetAddress.getLocalHost(),5678);
  BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
  PrintWriter out=new PrintWriter(server.getOutputStream());
  BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
  
  while(true){
   String str=wt.readLine();
   out.println(str);
   out.flush();
   if(str.equals("end")){
    break;
   }
   System.out.println(in.readLine());
  }
  server.close();
 }
}Client类:import java.net.*;
import java.io.*;public class Client{
 static Socket server;
 
 public static void main(String[] args)throws Exception{
  System.out.println("please input you message:\n");
  server=new Socket(InetAddress.getLocalHost(),5678);
  BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
  PrintWriter out=new PrintWriter(server.getOutputStream());
  BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
  
  while(true){
   String str=wt.readLine();
   out.println(str);
   out.flush();
   if(str.equals("end")){
    break;
   }
   System.out.println(in.readLine());
  }
  server.close();
 }
}Hello类
public class Hello
{
    static String ss="";
public static void main(String args[]) {
   // MyServer.Set("123");
    ss =MyServer.Get();
    System.out.println("in hello "+ss+"\n"); }}

解决方案 »

  1.   

    呵呵,你贴了2次Client,却没有贴MyServer
      

  2.   

    MyServer类
    import java.io.*;
    import java.net.*;public class MyServer 
    {public static String ss="asdf";public static String Get(){   
        System.out.println("in myserver get() "+ss+"\n");
        return ss;
    }public static void Set(String instr)
    {
        ss = instr;
        System.out.println("in myserver set() "+ss+"\n");
    }public static void run() throws IOException
    {
        ServerSocket server=new ServerSocket(5678);
        Socket client=server.accept();
        BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
        PrintWriter out=new PrintWriter(client.getOutputStream());
        while(true)
        {
            String str=in.readLine();
            Set(str);
            System.out.println(ss);
            out.println("has receive....");
            out.flush();
           if(str.equals("end"))
                break;
        }  
    client.close();
    }
    MyServer()
    {
     
    }
    public static void main(String[] args) throws IOException
    {
        System.out.println("in myserver main()"+ss+"\n");
        MyServer x = new MyServer();
        x.run();
     

    }