问题是这样的,有三个类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"); }}
但总是得到这个静态变量得初始值。具体类如下:(本质就是如何做到让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"); }}
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();
}
}