我想創建一個使用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