home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch18 / multi / UpdateReceiver.java < prev    next >
Encoding:
Java Source  |  1997-02-21  |  1.2 KB  |  41 lines

  1. // Thread that receives update messages and updates the entities
  2.  
  3. // Written by Bernie Roehl, December 1996
  4.  
  5. package multi;
  6.  
  7. import java.net.*;
  8. import java.io.*;
  9.  
  10. class UpdateReceiver extends Thread {
  11.  
  12.     World world;
  13.  
  14.     public UpdateReceiver(World wrld) {
  15.         world = wrld;
  16.         start();
  17.     }
  18.  
  19.     public void run() {
  20.         byte[] buffer = new byte[1024];
  21.         DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  22.         while (true) {
  23.             try { world.incoming_socket.receive(packet); }
  24.             catch (IOException e) {
  25.                 System.out.println("Error while reading update message: " + e);
  26.                 return;
  27.             }
  28.             ++world.packets_received;  // keep count of total number of packets received
  29.             UpdateMessage message;
  30.             try { message = new UpdateMessage(buffer); }
  31.             catch (IOException e) { continue; }  // ignore badly-formed messages
  32.             int entid = message.getEntityId();
  33.             Entity e = world.getEntity(entid);
  34.             if (e == null) 
  35.                 e = world.addEntity(entid);
  36.             e.update(message);
  37.         }
  38.    }
  39. }
  40.  
  41.