我想创建一个使用java套接字的客户端服务器程序。我有一些客户端和一台服务器。客户端将有关其CPU负载的信息发送给服务器,然后来自客户端的所有信息都由服务器保存到xml文件中。客户定期发送这些信息(例如每5分钟)。java套接字生成xml
从技术上讲,我有一个问题需要控制,以及在每个客户端发送CPU负载后如何解决这个问题。任何人都可以帮忙 这是我的代码部分,
public void listenSocket(){
int client=0;
while(client<2){
ClientWorker w;
try{
w = new ClientWorker(server.accept());
Thread t = new Thread(w);
t.start();
CpuLoad[client]=w.getLoad();
Ip[client]=w.getIP();
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);
}
client++;
}
XmlGenerator xml = new XmlGenerator();
try{
xml.generate(CpuLoad, Ip);
System.out.println("file generated");
}catch(Exception e){
System.out.println("Can't generate file");
}
}
我认为我的算法是正确的,但仍然有一个错误:
Exception in thread "main" java.lang.NullPointerException
at server.ServerOne.listenSocket(ServerOne.java:39)
这是类Clientworker
的class ClientWorker implements Runnable{
Socket client;
String ip;
String load;
String data[]=new String[7];
ClientWorker(Socket client){
this.client = client;
}
public void setIP(String ip){
this.ip = ip;
}
public void setData(String load){
this.load = load;
}
public String getIP(){
return ip;
}
public String getData(){
return load;
}
public void run(){
BufferedReader in = null;
PrintWriter out = null;
try{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {
System.out.println("in or out failed");
System.exit(-1);
}
try{
String a = in.readLine();
setData(a);
String b = client.getInetAddress().toString();
setIP(b);
//Send data back to client
out.println(a);
System.out.println(a);
}catch (IOException e) {
System.out.println("Read failed");
}
}
}
你的问题太模糊,给你任何明智的答案。请张贴一些代码和一些说明你在哪里遇到问题以及具体问题。 – maasg 2012-07-18 08:39:53
希望这个改进更有帮助。谢谢@maasg – irvana 2012-07-18 08:51:37
不是。哪一行是39行?当你捕捉到一个异常时,不要只编写自己的错误信息:使用异常附带的错误信息。 – EJP 2012-07-18 08:59:08