-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方法检查的属性并中断线程。 –