Hi !
Featured games (85)
games approved by the League of Dukes
Games in Showcase (636)
Games in Android Showcase (178)
games submitted by our members
Games in WIP (686)
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 2431 times)
0 Members and 1 Guest are viewing this topic.
Offline leknor

Junior Devvie


« Posted 2003-02-13 16: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 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 Devvie

Friendly fire isn't friendly!

« Reply #1 - Posted 2003-02-14 10: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 Devvie


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

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

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 Devvie

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

« Reply #3 - Posted 2003-03-10 23: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.

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 Devvie


« Reply #4 - Posted 2003-03-11 01: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: , 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.

Dwinin (61 views)
2015-11-07 13:29:08

Rems19 (75 views)
2015-10-31 01:36:56

Rems19 (68 views)
2015-10-31 01:32:37

williamwoles (103 views)
2015-10-23 10:42:59

williamwoles (90 views)
2015-10-23 10:42:45

Jervac_ (103 views)
2015-10-18 23:29:12

DarkCart (131 views)
2015-10-16 00:58:11

KaiHH (113 views)
2015-10-11 14:10:14

KaiHH (153 views)
2015-10-11 13:26:18

BurntPizza (166 views)
2015-10-08 03:11:46
Rendering resources
by Roquen
2015-11-13 14:37:59

Rendering resources
by Roquen
2015-11-13 14:36:58

Math: Resources
by Roquen
2015-10-22 07:46:10

Networking Resources
by Roquen
2015-10-16 07:12:30

Rendering resources
by Roquen
2015-10-15 07:40:48

Math: Inequality properties
by Roquen
2015-10-01 13:30:46

Math: Inequality properties
by Roquen
2015-09-30 16:06:05

HotSpot Options
by Roquen
2015-08-29 11:33:11 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‑
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!