Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (477)
Games in Android Showcase (109)
games submitted by our members
Games in WIP (536)
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  
  Does NIO coalesce reads?  (Read 2061 times)
0 Members and 1 Guest are viewing this topic.
Offline leknor

Junior Member




ROCK!!!


« Posted 2003-02-13 17:18:16 »

My code currently works when I use it but I think I'm making some assumptions that may not hold true under heady load.

I have a bunch of java.nio.channels.DatagramChannel's which I've setup so I can send/receive UDP packets. I then register them with a Selector and wait for input.  That so far seems to work.

My potential problem is with the channel.read(ByteBuffer) method. If two packets have been received on a channel before I can read them will the next read(ByteBuffer) operation read them both or will I need to read the channel twice? Personally I'm hoping for the latter but increasingly I'm feelling like the former is the actuall behavior.
Offline Herkules

Senior Member




Friendly fire isn't friendly!


« Reply #1 - Posted 2003-02-14 11:05:28 »

I hvae no idea of UDP, but for TCP definately messages sent and data read have nothing in common - it is just  a bytestream and any number of bytes might be read.  From zero up to serveral messages at once, also only parts of messages.

But I assume that is the nature of TCP and for UDP I'd expect the behavior you hope for.

HARDCODE    --     DRTS/FlyingGuns/JPilot/JXInput  --    skype me: joerg.plewe
Offline leknor

Junior Member




ROCK!!!


« Reply #2 - Posted 2003-02-14 18:11:02 »

I asked the author of the Java NIO book and here is his reply:

Quote
Datagrams are chunky.

There are basically two types of network connections: streams (TCP) and datagrams (UDP).  TCP streams (as modeled by SocketChannel objects) function like a pipe where everything blends together into a continuous stream.

Datagrams (as modeled by the DatagramChannel class) are independent chunks.  No datagram has any relationship to any other.  The metaphor that best applies is letters in a mailbox. Each has a data payload but there is no notion of order or relationship.  Datagrams could be sent in the order A, B, C
but arrive at the destination in the order B, C, A.

So, the answer to your question is "no".  It's one read per datagram and they will never mix together.  One gotcha to think about is that if the ByteBuffer you're reading into is not big enough to hold the entire datagram, the excess data will be silently discarded.

... which is what I wanted to hear.  Grin
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline gregorypierce

Senior Member




I come upon thee like the blue screen of death....


« Reply #3 - Posted 2003-03-11 00:55:07 »

If that's the case I've definitely got a bug to report in NIO for JDK1.4.1_02 as on occasion I've seen several messages come in at the same time all concatenated together using TCP or UDP. Caused me MUCH headache.

http://www.gregorypierce.com

She builds, she builds oh man
When she links, she links I go crazy
Cause she looks like good code but she's really a hack
I think I'll run upstairs and grab a snack!
Offline leknor

Junior Member




ROCK!!!


« Reply #4 - Posted 2003-03-11 02:40:44 »

TCP should be coalesed.

How'd you verify that UDP is being coalesed? Are you sure it's the JVM or could it be a buggy network driver somewhere. If you need to do some packet sniffing try: http://ethereal.com/ , that's what I use for both linux and windows.
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.

CogWheelz (18 views)
2014-07-30 21:08:39

Riven (26 views)
2014-07-29 18:09:19

Riven (15 views)
2014-07-29 18:08:52

Dwinin (13 views)
2014-07-29 10:59:34

E.R. Fleming (34 views)
2014-07-29 03:07:13

E.R. Fleming (12 views)
2014-07-29 03:06:25

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

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

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

Riven (31 views)
2014-07-23 20:56:16
List of Learning Resources
by SilverTiger
2014-07-31 18:29:50

List of Learning Resources
by SilverTiger
2014-07-31 18:26:06

List of Learning Resources
by SilverTiger
2014-07-31 13:54:12

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
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!