Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (476)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (533)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Java Serialization and sendToServer()  (Read 1234 times)
0 Members and 1 Guest are viewing this topic.
Offline Alkix

Junior Newbie





« Posted 2007-03-05 19:41:58 »

I'm getting a strange bug while trying to use the Java Object Serialization and moving data back and forth between my client and server, via the sendToServer() method.

The code works when i run a test case in a single class, but then fails when i move the data over through the server.  The first thing I noticed is that sgs appends two bytes of data to the array that backs the bytebuffer. I managed to get around that, but now when I try to read an object from the ObjectInputStream i created from a ByteArrayInputStream i created from a byte array i created from the bytebuffer that the UserDataRecieved callback method hands me *breathe now*, it blocks and doesn't finish the method.

Firstly, can anyone explain why this may be happening, and secondly, what all happens to the bytebuffer after I send it to the server?

here's the code for my abstract event class that handles both the serialization and deserialization for the events.

Please excuse the attempted problem solving code in there.

Thanks for your help in advance
-Alex

**********

package events;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.ByteBuffer;

public abstract class AbstractEvent implements Serializable{

   public ByteBuffer dematerialize() {

      byte[] bytes = null;
      ObjectOutputStream oos =null;
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      
      try {
         oos = new ObjectOutputStream(baos);
         oos.writeObject(this);
         oos.flush();
         baos.flush();
         bytes = baos.toByteArray();
         for (byte b : bytes){
            System.out.print(b+" ");
         }
         System.out.println("");
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      finally{
         try {
            baos.close();
            assert oos != null;
            oos.close();
         } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
         
      }
      assert bytes != null;
      ByteBuffer bb= ByteBuffer.allocate(bytes.length);
      bb.put(bytes);
      
      for (byte b : bb.array()){
         System.out.print(b+" ");
      }
      System.out.println("");
      System.out.println(bb.array().length+"long");
      
      return bb;
   }
   
   public static Event rematerialize(ByteBuffer bb){
      System.out.println("Byte buffer at pos "+bb.position());
      System.out.println(bb.capacity()+" total bytes");
      byte[] byteArray = new byte[bb.remaining()];
      
      System.out.println(bb.remaining()+"bytes remaining");
      bb.get(byteArray);
      
      //System.out.println(bb.arrayOffset());
      //bb.get();
      //bb.get();
      
      for (byte b : byteArray){
         System.out.print(b+" ");
      }
      
      System.out.println("");
      
      ObjectInputStream ois = null;
      System.out.println(1);
      ByteArrayInputStream bais = new ByteArrayInputStream(byteArray, 0, byteArray.length);
      System.out.println(bais.available()+" bytes available in bais");
      Event e = null;
      try {
         ois = new ObjectInputStream(bais);
         System.out.println(bais.available()+" bytes available in bais");
      } catch (IOException e1) {
         System.out.println("Couldn't make ois");
         // TODO Auto-generated catch block
         e1.printStackTrace();
         return null;
      }
      try {
         System.out.println(2);
         System.out.println(ois.available() + " bytes can be read");
         e = (Event)ois.readObject();
         System.out.println(3);
      } catch (IOException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
      } catch (ClassNotFoundException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
      }
      System.out.println("Recieved "+e.toString());
      
      return e;
   }
}

**********

Offline Jeff

JGO Coder




Got any cats?


« Reply #1 - Posted 2007-03-09 18:29:32 »

Id like to see your code that actually interfaces to the SGS.

If you are using the old EA release please upgrade to 0.9 as trying to support EA too at this point will confuse the heck out of me Cool


Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline Alkix

Junior Newbie





« Reply #2 - Posted 2007-03-12 20:58:50 »

Yeah I was using EA when that problem came up, I'm currently switching over to 0.9 and trying to learn the changes, I'll see if the problem corrects itself when I get the server running agin.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

pw (18 views)
2014-07-24 01:59:36

Riven (17 views)
2014-07-23 21:16:32

Riven (14 views)
2014-07-23 21:07:15

Riven (17 views)
2014-07-23 20:56:16

ctomni231 (45 views)
2014-07-18 06:55:21

Zero Volt (40 views)
2014-07-17 23:47:54

danieldean (32 views)
2014-07-17 23:41:23

MustardPeter (36 views)
2014-07-16 23:30:00

Cero (51 views)
2014-07-16 00:42:17

Riven (50 views)
2014-07-14 18:02:53
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!