现在开始把各个虚拟机的信息传到服务器上,这里实际上是一个多线程单向的传输,在网上查找相关资料,推荐http://blog.csdn.net/zhangty0223/article/details/8744223,改出自己的代码,实验证明可用。MySystemMonitor类见我之前写的http://blog.csdn.net/taoxin52/article/details/8687852。
server:
package bupt.tx.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import bupt.tx.socket.SocketSetting;
public class Server2MClient {
public static void main(String[] args) throws IOException {
@SuppressWarnings("resource")
ServerSocket server = new ServerSocket(SocketSetting.SERVER_PORT);
while (true) {
Socket socket = server.accept();
invoke(socket);
}
}
private static void invoke(final Socket client) throws IOException {
new Thread(new Runnable() {
public void run() {
BufferedReader in = null;
PrintWriter out = null;
try {
in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
out = new PrintWriter(client.getOutputStream());
while (true) {
String msg = in.readLine();
System.out.println(msg);
out.println("Server received " + msg);
out.flush();
if (msg.equals("bye")) {
break;
}
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {
}
try {
out.close();
} catch (Exception e) {
}
try {
client.close();
} catch (Exception e) {
}
}
}
}).start();
}
}
client:
package bupt.tx.socket;
//import java.io.BufferedReader;
//import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.concurrent.TimeUnit;
import bupt.tx.systemmonitor.MySystemMonitor;
import bupt.tx.socket.SocketSetting;
public class MClient {
public static void main(String[] args) throws Exception {
int count = 0;
Socket socket = new Socket(SocketSetting.SERVER_IP, SocketSetting.SERVER_PORT);
// BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
// BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
//String msg = reader.readLine();
out.println(MySystemMonitor.getIP());
out.flush();
out.println(MySystemMonitor.getTotalInfo());
out.flush();
//if (msg.equals("bye")) {
// break;
//}
TimeUnit.MINUTES.sleep(1);
if(count ++ > 10)
break;
}
socket.close();
}
}
setting:
package bupt.tx.socket;
public class SocketSetting {
final public static int SERVER_PORT = 10000;
//public static int MAXNOHBTIME = 60000;
final public static String SERVER_IP = "10.***.***.***";
}