用Java发送和接收套接字消息

时间:2014-04-10 09:44:39

标签: java sockets time nullpointerexception thread-sleep

我们正在为我们的Uni做一个套接字编程项目。我们正在开发一个文件同步软件,目前我们一直在发送和接收通过套接字发送的消息。

因此,在本地计算机上进行测试时,代码运行良好。但是,当我们通过LAN和WiFi模拟服务器 - 客户端环境时,我们会得到空指针异常。文件以块的形式发送,因此只有5-10个文件通过。

我想在socket上发送消息所需的总时间存在一些问题,这就是我们获得异常的原因。

发送消息的方法发送消息并启动定时器线程。如果在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) {   
  }
}

1 个答案:

答案 0 :(得分:0)

当您再次递归调用sendMessage()时,您也应该终止thread线程。

请发布错误发生的完整堆栈跟踪和代码。