我關於套接字的代碼被分成了三個類,我一直在研究它(並學習Socket Api)幾個小時,現在我已經把它理解爲只有一個(我可以看到)。從服務器收到的消息將不會打印,但會拋出此錯誤。一個很好的套接字
在線程 「螺紋14」 的異常顯示java.lang.NullPointerException main.Listen.run(Listen.java:11)java.lang.Thread.run(未知來源)
控制檯類
package main;
public class Console extends Handle {
String nextl = System.getProperty("line.separator");
String info = "[INFO] ";
String ser = "[SERVER] ";
String err = "[ERROR] ";
String name = "[" + userName + "] ";
public void log() {
startupCon();
Network network = new Network();
int allgood = network.connect();
if (allgood == 34) {
Listen listen = new Listen();
new Thread(listen).start();
}
}
void startupCon() {
System.out.println("===========");
System.out.println("=+CONSOLE+=");
System.out.println("===========" + nextl);
}
void networkCon(String net) {
System.out.println(net);
}
}
網絡類:
package main;
import java.net.*;
import java.io.*;
public class Network extends Console {
int port = 7771;
String host = "localhost";
Socket client;
OutputStream outToServer;
DataOutputStream out;
InputStream inFromServer;
DataInputStream in;
public int connect() {
int getOpen = open();
System.out.println(getOpen);
int getStream = trans(getOpen);
System.out.println(getStream);
return getStream;
}
int open() {
try {
networkCon(info + "Attemping to connect to /" + host + ":" + port);
client = new Socket(host, port);
System.out.println(info + "Established connection with "
+ client.getRemoteSocketAddress());
return 42;
} catch (SocketTimeoutException s) {
networkCon(err + "Socket timed out!");
return 9;
} catch (IOException e) {
System.out.println(err + "Could not connect to /" + host + ":"
+ port);
return 9;
}
}
int trans(int hostup) {
if (hostup == 42) {
try {
outToServer = client.getOutputStream();
out = new DataOutputStream(outToServer);
inFromServer = client.getInputStream();
in = new DataInputStream(inFromServer);
return 34;
} catch (SocketTimeoutException s) {
networkCon(err + "Socket timed out!");
return 8;
} catch (IOException e) {
System.out.println(err + "Connection lost!");
return 8;
}
}
return 7;
}
}
聽類(我的存在的禍根)
package main;
import java.io.*;
import java.net.*;
public class Listen extends Network implements Runnable {
public void run() {
while (true) {
try {
networkCon(in.readUTF());
} catch (SocketTimeoutException s) {
networkCon(err + "Socket timed out!");
} catch (IOException e) {
System.out.println(err + "Connection lost!");
}
}
}
}
我猜流是沒有得到「在」類中聆聽設置爲可變的,但我沒有線索,如果是這樣的問題,或者如何修理它。
'in'是空的'Listen',就像你猜到了。請注意,NullPointer帶有一個行號。 – keyser 2013-04-04 22:06:57
啊,ty,時間來弄清楚如何正確獲取值... – 2013-04-04 22:09:55