Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (539)
Games in Android Showcase (133)
games submitted by our members
Games in WIP (603)
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  
  designing protocol for multiplayer game  (Read 652 times)
0 Members and 1 Guest are viewing this topic.
Offline zidsal

Senior Newbie





« Posted 2014-05-21 14:19:58 »

So I'm doing all of the networking for my game with out the use of any library (learning purposes). Currently the transport layer uses TCP and networking is done with NIO. As I am using TCP it means there is no guarantee that all of the bytes for a message will arrive at the same time e.g.

lets say my packet is AABBBAAB I might receive it as AAB BBAA B.

This means that I need a way to detect where a packet starts and were it ends. For this reason the first part of my message should logically be a length so we can see if we need to wait for more bytes to finish building the packet. The next part of my packet is a msg ID that basically tells the  receiver what packet you need to build (e.g a ping packet, login packet e.t.c).

However I'm currently stuck on how to structure the rest of the message. Detecting a packets length and Msg ID is easy as they are always 5 and 3 bytes in size respective. What are the best ways to structure the rest of the packet? I need an easy way to identify the remaining fields in the message (basically the content of the message).

as an example lets say I have a packet

1  
2  
3  
Login packet which has fields of 
username = foo
password  = bar


I could structure the message like so 00100001foobar so that we know the rest of the message is 10 bytes, the packet belongs to login as the id is 001 but how do we know what fields belong to the username and what fields belong to the password?


Offline opiop65

JGO Kernel


Medals: 161
Projects: 7
Exp: 4 years


JumpButton Studios


« Reply #1 - Posted 2014-05-21 15:16:02 »

I think you have it wrong; TCP ensures the packet is received, UDP doesn't. Packets are received as whole packets, not streamed in. You shouldn't have this issue.

Offline zidsal

Senior Newbie





« Reply #2 - Posted 2014-05-21 15:20:47 »

you sure about that? TCP is a stream protocol and as such it doesn't know what a packet is.  The bytes streamed in TCP are reliable and ordered but it has no guarantee that the entire packet will come in at once. I.e TCP does not provide you with a a 1:1 relationship to the physical packets sent (because TCP doesn't know what a packet is).
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Herjan
« Reply #3 - Posted 2014-05-21 15:51:16 »

opiop65 was true, packets are indeed received as whole packets, but regardless of this, an old trick is to simply separate the different fields you send in a packet, f.e.:

001-00001-foo-bar

Even if you get 17 packets of one character, you still know what's the username/password.

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.

rwatson462 (37 views)
2014-12-15 09:26:44

Mr.CodeIt (31 views)
2014-12-14 19:50:38

BurntPizza (62 views)
2014-12-09 22:41:13

BurntPizza (99 views)
2014-12-08 04:46:31

JscottyBieshaar (60 views)
2014-12-05 12:39:02

SHC (74 views)
2014-12-03 16:27:13

CopyableCougar4 (77 views)
2014-11-29 21:32:03

toopeicgaming1999 (138 views)
2014-11-26 15:22:04

toopeicgaming1999 (127 views)
2014-11-26 15:20:36

toopeicgaming1999 (38 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
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!