-1
我們正在爲我們的Uni做一個套接字編程項目。我們正在開發一個文件同步軟件,目前我們正在發送和接收通過套接字發送的消息。在Java中發送和接收套接字消息
因此,在本地機器上測試時,代碼完美工作。但是,當我們通過LAN和WiFi模擬服務器 - 客戶端環境時,我們會得到空指針異常。這些文件以大塊的形式發送,因此只有5-10個文件通過。
我猜想通過套接字發送消息所需的總時間有一些問題,這就是我們爲什麼會得到異常的原因。
發送消息的方法發送消息並啓動計時器線程。如果在2秒內沒有收到服務器的迴應,則會再次發送消息。這裏是發送消息的代碼:
public static void sendMessage(final byte[] message) {
try {
final Thread timer = new Thread() {
@Override
public void run() {
try {
System.out.println("timer started");
sleep(1500);
System.out.println("timer timeout");
sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
}
}
};
Thread thread = new Thread() {
@Override
public void run() {
try {
byte[] buffer = new byte[1250];
serverByteStream.read(buffer);
timer.stop();
} catch (Exception e) {
}
}
};
timer.start();
serverByteStream.write(message);
thread.start();
} catch (Exception e) {
}
}
請發佈異常堆棧跟蹤。 –
ServerThread.copyFile上的java.lang.NullPointerException(ServerThread.java:372)在ServerThread.run(ServerNit.java:166) @GregorKoukkoullis您是否想要查看它所指的代碼? – LukaVazic
整個堆棧跟蹤。你從'e.printStackTrace()'得到的輸出。您應該避免在線程上使用方法stop(),更好地設置由線程的run方法檢查的屬性並中斷線程。 –