hmm yes… sounds silly… just for testing…
I should test the other way with a windows server and android client… pretty sure i had issues this way too… i’ll
check again.
Logs ( when client connection button pressed ) on the android side:
D/com.jme3.network.base.DefaultClient: FINE Adding standard services...
D/com.jme3.network.service.ServiceManager: FINE addService(com.jme3.network.service.serializer.ClientSerializerRegistrationsService[serviceManager.class=])
FINE Initializing service:com.jme3.network.service.serializer.ClientSerializerRegistrationsService[serviceManager.class=]
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
D/com.jme3.network.serializing.Serializer: FINE Registered class[-42]:class com.jme3.network.message.DisconnectMessage to:com.jme3.network.message.DisconnectMessage$DisconnectSerializer@ca6264e
D/com.jme3.network.serializing.Serializer: FINE Registered class[-44]:class com.jme3.network.message.ClientRegistrationMessage to:com.jme3.network.message.ClientRegistrationMessage$ClientRegistrationSerializer@68b87c
FINE Registered class[-2]:boolean to:com.jme3.network.serializing.serializers.BooleanSerializer@b48505
FINE Registered class[-3]:byte to:com.jme3.network.serializing.serializers.ByteSerializer@442595a
D/com.jme3.network.serializing.Serializer: FINE Registered class[-4]:char to:com.jme3.network.serializing.serializers.CharSerializer@d15a78b
FINE Registered class[-5]:short to:com.jme3.network.serializing.serializers.ShortSerializer@bc6e068
FINE Registered class[-6]:int to:com.jme3.network.serializing.serializers.IntSerializer@47d6c81
D/com.jme3.network.serializing.Serializer: FINE Registered class[-7]:long to:com.jme3.network.serializing.serializers.LongSerializer@d3cb126
FINE Registered class[-8]:float to:com.jme3.network.serializing.serializers.FloatSerializer@a353167
FINE Registered class[-9]:double to:com.jme3.network.serializing.serializers.DoubleSerializer@a5d9b14
FINE Registered class[-10]:class java.lang.Boolean to:com.jme3.network.serializing.serializers.BooleanSerializer@1d97d03
FINE Registered class[-11]:class java.lang.Byte to:com.jme3.network.serializing.serializers.ByteSerializer@80ebefe
D/com.jme3.network.serializing.Serializer: FINE Registered class[-12]:class java.lang.Character to:com.jme3.network.serializing.serializers.CharSerializer@fb9b975
FINE Registered class[-13]:class java.lang.Short to:com.jme3.network.serializing.serializers.ShortSerializer@7a73398
FINE Registered class[-14]:class java.lang.Integer to:com.jme3.network.serializing.serializers.IntSerializer@37977f1
FINE Registered class[-15]:class java.lang.Long to:com.jme3.network.serializing.serializers.LongSerializer@2a9afd6
FINE Registered class[-16]:class java.lang.Float to:com.jme3.network.serializing.serializers.FloatSerializer@b574257
D/com.jme3.network.serializing.Serializer: FINE Registered class[-17]:class java.lang.Double to:com.jme3.network.serializing.serializers.DoubleSerializer@a7f144
FINE Registered class[-18]:class java.lang.String to:com.jme3.network.serializing.serializers.StringSerializer@19ca22d
FINE Registered class[-19]:class com.jme3.math.Vector3f to:com.jme3.network.serializing.serializers.Vector3Serializer@4e8f362
D/com.jme3.network.serializing.Serializer: FINE Registered class[-20]:class java.util.Date to:com.jme3.network.serializing.serializers.DateSerializer@1d4ddb0
FINE Registered class[-21]:class java.util.AbstractCollection to:com.jme3.network.serializing.serializers.CollectionSerializer@442254f
FINE Registered class[-22]:class java.util.AbstractList to:com.jme3.network.serializing.serializers.CollectionSerializer@4c18cba
FINE Registered class[-23]:class java.util.AbstractSet to:com.jme3.network.serializing.serializers.CollectionSerializer@e073f61
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
D/com.jme3.network.serializing.Serializer: FINE Registered class[-24]:class java.util.ArrayList to:com.jme3.network.serializing.serializers.CollectionSerializer@46bba86
FINE Registered class[-25]:class java.util.HashSet to:com.jme3.network.serializing.serializers.CollectionSerializer@70c3374
FINE Registered class[-26]:class java.util.LinkedHashSet to:com.jme3.network.serializing.serializers.CollectionSerializer@811b8e3
FINE Registered class[-27]:class java.util.LinkedList to:com.jme3.network.serializing.serializers.CollectionSerializer@87312e0
FINE Registered class[-28]:class java.util.TreeSet to:com.jme3.network.serializing.serializers.CollectionSerializer@99d003f
FINE Registered class[-29]:class java.util.Vector to:com.jme3.network.serializing.serializers.CollectionSerializer@da67d0c
D/com.jme3.network.serializing.Serializer: FINE Registered class[-30]:class java.util.AbstractMap to:com.jme3.network.serializing.serializers.MapSerializer@6b615b
FINE Registered class[-31]:class java.util.jar.Attributes to:com.jme3.network.serializing.serializers.MapSerializer@a0dc2d1
D/com.jme3.network.serializing.Serializer: FINE Registered class[-32]:class java.util.HashMap to:com.jme3.network.serializing.serializers.MapSerializer@4f4b837
FINE Registered class[-33]:class java.util.Hashtable to:com.jme3.network.serializing.serializers.MapSerializer@22dcac2
FINE Registered class[-34]:class java.util.IdentityHashMap to:com.jme3.network.serializing.serializers.MapSerializer@304fb09
FINE Registered class[-35]:class java.util.TreeMap to:com.jme3.network.serializing.serializers.MapSerializer@549413c
FINE Registered class[-36]:class java.util.WeakHashMap to:com.jme3.network.serializing.serializers.MapSerializer@1df01a
D/com.jme3.network.serializing.Serializer: FINE Registered class[-37]:class java.lang.Enum to:com.jme3.network.serializing.serializers.EnumSerializer@5340241
FINE Registered class[-38]:class com.jme3.network.message.GZIPCompressedMessage to:com.jme3.network.serializing.serializers.GZIPSerializer@eae1d27
D/com.jme3.network.serializing.Serializer: FINE Registered class[-39]:class com.jme3.network.message.ZIPCompressedMessage to:com.jme3.network.serializing.serializers.ZIPSerializer@77d817d
D/com.jme3.network.serializing.Serializer: FINE Registered class[-41]:class com.jme3.network.serializing.serializers.FieldSerializer to:com.jme3.network.serializing.serializers.FieldSerializer@7e5b879
FINE Registered class[-40]:class com.jme3.network.message.ChannelInfoMessage to:com.jme3.network.serializing.serializers.FieldSerializer@7e5b879
D/com.jme3.network.serializing.Serializer: FINE Registered class[-43]:class [I to:com.jme3.network.serializing.serializers.ArraySerializer@9f8a1f
FINE Registered class[-45]:class com.jme3.network.message.SerializerRegistrationsMessage to:com.jme3.network.serializing.serializers.FieldSerializer@7e5b879
D/com.jme3.network.serializing.Serializer: FINE Registered class[-46]:class [Lcom.jme3.network.message.SerializerRegistrationsMessage$Registration; to:com.jme3.network.serializing.serializers.ArraySerializer@9f8a1f
FINE Registered class[-47]:class com.jme3.network.message.SerializerRegistrationsMessage$Registration to:com.jme3.network.serializing.serializers.FieldSerializer@7e5b879
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
I/System.out: Bit size:48 mask:ffffffffffff
D/com.jme3.network.service.ServiceManager: FINE addService(com.jme3.network.service.rpc.RpcClientService[serviceManager.class=])
FINE Initializing service:com.jme3.network.service.rpc.RpcClientService[serviceManager.class=]
D/com.jme3.network.util.AbstractMessageDelegator: FINEST map(null)
D/com.jme3.network.util.AbstractMessageDelegator: FINEST Checking method:public java.lang.Object com.jme3.network.service.rpc.RpcConnection.callAndWait(byte,short,short,java.lang.Object[])
FINEST isValidMethod(public java.lang.Object com.jme3.network.service.rpc.RpcConnection.callAndWait(byte,short,short,java.lang.Object[]), null)
FINEST Parameter count is not 1 or 2
FINEST Checking method:public void com.jme3.network.service.rpc.RpcConnection.callAsync(byte,short,short,java.lang.Object[])
FINEST isValidMethod(public void com.jme3.network.service.rpc.RpcConnection.callAsync(byte,short,short,java.lang.Object[]), null)
FINEST Parameter count is not 1 or 2
FINEST Checking method:public void com.jme3.network.service.rpc.RpcConnection.close()
D/com.jme3.network.util.AbstractMessageDelegator: FINEST isValidMethod(public void com.jme3.network.service.rpc.RpcConnection.close(), null)
FINEST Parameter count is not 1 or 2
FINEST Checking method:public void com.jme3.network.service.rpc.RpcConnection.handleMessage(com.jme3.network.service.rpc.msg.RpcCallMessage)
FINEST isValidMethod(public void com.jme3.network.service.rpc.RpcConnection.handleMessage(com.jme3.network.service.rpc.msg.RpcCallMessage), null)
FINEST Adding method mapping:class com.jme3.network.service.rpc.msg.RpcCallMessage = public void com.jme3.network.service.rpc.RpcConnection.handleMessage(com.jme3.network.service.rpc.msg.RpcCallMessage)
FINEST Checking method:public void com.jme3.network.service.rpc.RpcConnection.handleMessage(com.jme3.network.service.rpc.msg.RpcResponseMessage)
FINEST isValidMethod(public void com.jme3.network.service.rpc.RpcConnection.handleMessage(com.jme3.network.service.rpc.msg.RpcResponseMessage), null)
D/com.jme3.network.util.AbstractMessageDelegator: FINEST Adding method mapping:class com.jme3.network.service.rpc.msg.RpcResponseMessage = public void com.jme3.network.service.rpc.RpcConnection.handleMessage(com.jme3.network.service.rpc.msg.RpcResponseMessage)
FINEST Checking method:public void com.jme3.network.service.rpc.RpcConnection.registerHandler(short,com.jme3.network.service.rpc.RpcHandler)
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
D/com.jme3.network.util.AbstractMessageDelegator: FINEST isValidMethod(public void com.jme3.network.service.rpc.RpcConnection.registerHandler(short,com.jme3.network.service.rpc.RpcHandler), null)
FINEST First paramter is not a MessageConnection or subclass.
FINEST Checking method:public void com.jme3.network.service.rpc.RpcConnection.removeHandler(short,com.jme3.network.service.rpc.RpcHandler)
FINEST isValidMethod(public void com.jme3.network.service.rpc.RpcConnection.removeHandler(short,com.jme3.network.service.rpc.RpcHandler), null)
FINEST First paramter is not a MessageConnection or subclass.
FINEST Checking method:protected void com.jme3.network.service.rpc.RpcConnection.send(byte,com.jme3.network.service.rpc.msg.RpcResponseMessage)
D/com.jme3.network.util.AbstractMessageDelegator: FINEST isValidMethod(protected void com.jme3.network.service.rpc.RpcConnection.send(byte,com.jme3.network.service.rpc.msg.RpcResponseMessage), null)
FINEST First paramter is not a MessageConnection or subclass.
D/com.jme3.network.service.ServiceManager: FINE addService(com.jme3.network.service.rmi.RmiClientService[serviceManager.class=])
FINE Initializing service:com.jme3.network.service.rmi.RmiClientService[serviceManager.class=]
D/com.jme3.network.service.ServiceManager: FINE addService(example.net.client.AccountClientService[serviceManager.class=])
FINE Initializing service:example.net.client.AccountClientService[serviceManager.class=]
FINE addService(example.net.client.GameSessionClientService[serviceManager.class=])
FINE Initializing service:example.net.client.GameSessionClientService[serviceManager.class=]
D/com.jme3.network.service.ServiceManager: FINE addService(example.net.chat.client.ChatClientService[serviceManager.class=])
FINE Initializing service:example.net.chat.client.ChatClientService[serviceManager.class=]
FINE addService(com.simsilica.ethereal.EtherealClient[serviceManager.class=])
FINE Initializing service:com.simsilica.ethereal.EtherealClient[serviceManager.class=]
D/com.jme3.network.util.AbstractMessageDelegator: FINEST map(null)
FINEST Checking method:protected com.simsilica.ethereal.net.SentState com.simsilica.ethereal.net.StateReceiver.ackReceivedState(int)
FINEST isValidMethod(protected com.simsilica.ethereal.net.SentState com.simsilica.ethereal.net.StateReceiver.ackReceivedState(int), null)
FINEST Second paramter is not a Message or subclass.
FINEST Checking method:public com.simsilica.ethereal.net.RemoteTimeSource com.simsilica.ethereal.net.StateReceiver.getTimeSource()
FINEST isValidMethod(public com.simsilica.ethereal.net.RemoteTimeSource com.simsilica.ethereal.net.StateReceiver.getTimeSource(), null)
FINEST Parameter count is not 1 or 2
FINEST Checking method:public void com.simsilica.ethereal.net.StateReceiver.handleMessage(com.simsilica.ethereal.net.ObjectStateMessage)
FINEST isValidMethod(public void com.simsilica.ethereal.net.StateReceiver.handleMessage(com.simsilica.ethereal.net.ObjectStateMessage), null)
D/com.jme3.network.util.AbstractMessageDelegator: FINEST Adding method mapping:class com.simsilica.ethereal.net.ObjectStateMessage = public void com.simsilica.ethereal.net.StateReceiver.handleMessage(com.simsilica.ethereal.net.ObjectStateMessage)
FINEST Checking method:protected void com.simsilica.ethereal.net.StateReceiver.processAcks(com.simsilica.mathd.util.IntRange[])
FINEST isValidMethod(protected void com.simsilica.ethereal.net.StateReceiver.processAcks(com.simsilica.mathd.util.IntRange[]), null)
FINEST Second paramter is not a Message or subclass.
D/com.jme3.network.serializing.Serializer: FINER writing class:class com.jme3.network.message.ClientRegistrationMessage with ID:-44
D/com.jme3.network.serializing.Serializer: FINER writing class:class com.jme3.network.message.ClientRegistrationMessage with ID:-44
I/System.out: sys Client started
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
D/com.jme3.network.serializing.serializers.FieldSerializer: FINER Reading field:private long com.jme3.network.message.ChannelInfoMessage.id using serializer:com.jme3.network.serializing.serializers.LongSerializer@d3cb126
D/com.jme3.network.serializing.serializers.FieldSerializer: FINER Reading field:private int[] com.jme3.network.message.ChannelInfoMessage.ports using serializer:com.jme3.network.serializing.serializers.ArraySerializer@9f8a1f
D/com.jme3.network.base.DefaultClient: FINER com.jme3.network.base.DefaultClient@756c3ed received:ChannelInfoMessage[515007270853558, [[I@5f1d222]]
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
D/com.jme3.network.serializing.Serializer: FINER writing class:class com.jme3.network.message.ClientRegistrationMessage with ID:-44
D/com.jme3.opencl.OpenCLObjectManager: FINE no active natives
D/com.jme3.network.base.DefaultClient: FINER com.jme3.network.base.DefaultClient@756c3ed received:com.jme3.network.message.ClientRegistrationMessage[id=1, gameName=null, version=0]
D/com.jme3.network.base.DefaultClient: FINE Connection established, id:1.
I might be wrong but java RMI from what I read and testing is not compatible with Android… So the first thing back in the time was to replace the callbacks with socket channels api of JME for my game. Also running the server part on Android does not make sense to me and even if you achieve that probably you will need to keep the device constantly plugged in charger .
/**
* Sets the period of time in milliseconds that the update loop will
* wait between time interval checks. This defaults to 0 because on
* Windows the default 60 FPS update rate will cause frame drops for
* a idle sleep time of 1 or more. However, 0 causes the loop to consume
* a noticable amount of CPU. For lower framerates, 1 is recommended
* and will be set automically based on the current frame rate interval
* if null is specified.
*/
public final void setIdleSleepTime( Long millis ) {
if( millis == null ) {
// Configure a reasonable default
if( updateRate > FPS_60 ) {
// Can probably get away with more sleep
this.idleSleepTime = 1;
} else {
// Else on Windows, sleep > 0 will take almost as long as
// a frame
this.idleSleepTime = 0;
}
} else {
this.idleSleepTime = millis;
}
}
Also there is this problem… Happens more on Linux than Windows on my experience. Android is basically Linux so… You could try adding a delay, see SimEthereal Questions - #51 by pspeed